This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Rebasing local git branches on the new repo


Now that I've switched my local git tree to the new repo (by changing
the URL for the 'origin' remote, and adding the old one as a 'gcc-old'
remote) I've been experimenting with these commands to switch some of
the ~400 local branches to be based on the new repo instead of the
git-svn mirror.

      # The local branch to update
      branch=foo

      # The previous upstream for the branch
      upstream=$(git rev-parse --symbolic-full-name $branch@{u} | sed
-n s,^refs/heads,gcc-old,p)
      # find the last upstream commit in the branch
      base=$(git merge-base $branch $upstream)
      # extract its SVN revision
      svnrev=$(git log -1 $base | sed -n
'/git-svn-id:/s/.*@\([[:digit:]]\+\) .*/\1/p')
      # find equivalent commit in master
      onto=$(git log --pretty=format:%H --grep="From-SVN: r$svnrev" $branch@{u})

      git rebase --onto $onto $upstream $branch

Use at your own risk!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]