This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Rebasing local git branches on the new repo
- From: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Sun, 12 Jan 2020 18:08:44 +0000
- Subject: 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!