Can I recover lost commits in a SVN repository using a local tracking git-svn branch?

2 messages, 1 author, 2016-06-15 · open the first message on its own page

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.

Re: 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

Here is how I achieved what I wanted:

1. Re-cloned http://tracked-svn/trunk in a fresh git-svn repo.
2. Added my old git-svn repo as a remote to the fresh repo. (eg. git
remote add -f up-to-date /path/to/repo)
3. git merge remotes/up-to-date/master
4. git svn dcommit

Rebasing on my old repo gives no errors, and dcommit works as
expected.

This might not be the best way to recover commits, but it got me what
I wanted.

Ian.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help