On Sun, 12 Jan 2020 at 18:08, Jonathan Wakely <jwakely....@gmail.com> wrote: > > 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!
The attached script is a slightly more robust version of those commands.
rebase_branch.sh
Description: application/shellscript