Can I recover lost commits in a SVN repository using a local tracking git-svn branch?
From: Ian Stevens <hidden>
Date: 2016-06-15 22:48:42
A SVN repo I use git-svn to track was recently corrupted and a backup
was recovered. However, a week's worth of commits were lost in the
recovery. Is it possible to recover those lost commits using git-svn
dcommit on my local git repo? Is it sufficient to run git-svn dcommit
with the SHA1 of the last recovered commit in SVN? eg.
> svn info http://tracked-svn/trunk | sed -n "s/Revision: //p"
252
> git log --grep="git-svn-id:.*@252" --format=oneline | cut -f1 -
d" "
55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
> git svn dcommit 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
Or will the git-svn-id need to be stripped from the intended
commits?
I tried this using --dry-run but couldn't tell whether it would try to
submit all commits:
> git svn dcommit --verbose --dry-run
55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
Committing to http://tracked-svn/trunk ...
dcommitted on a detached HEAD because you gave a revision
argument.
The rewritten commit is: 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
I also tried a naive git-svn dcommit but receive this error (r285 is
the old SVN HEAD which was lost):
> git svn dcommit
Committing to http://tracked-svn/trunk ...
Invalid filesystem revision number: No such revision 285 at /opt/
local/libexec/git-core/git-svn line 4346
Thanks for your help,
Ian.