Re: git-svn problem: unexpected files/diffs in commit
- From
Seth Falcon <sethfalcon@gmail.com>
- Date
- Aug 26, 2006, 00:46 UTC
- Message-ID
- <m2lkpcfhml.fsf@ziti.local>
- In-Reply-To
- <20060825191516.GA8957@localdomain>
Eric Wong <normalperson@yhbt.net> writes:
> Cool that it works for you, I've yet to get SVN:: libs working with a > repository I didn't have full read access to. I assume you have full > read access?
Yes, I have full rw access on that part of the svn repos. The SVN:: libs are noticeably faster.
Aside: For others tracking this: the "SVN::" libs in question are the Perl bindings that come with Subversion and are optionally built when you build from source. I wasted some google time searching CPAN for SVN:: so this might help someone. :-)
> Outside of the SSL problems, the mis-commit isn't strictly user-error, > but git-svn is confusing in this case, as the documentation is unclear > about what git-svn should do in this case :x
> I usually check with git log remotes/git-svn..HEAD instead of git > diff. Perhaps adding --no-merges would be more correct?
I'm not sure how to reproduce the situation I was in, but what would git log have shown me that git diff didn't -- IOW, would it have been obvious that the commit op was going to add extra stuff and effectively undo a rev in svn?
> Simple answer: instead of pull, you should've used git rebase. But I > don't think the documentation makes it clear at all.
... reads git-rebase man page... Ah, git-rebase does sound like what I want.
> I've been really slacking on the git-svn documentation the past few > months, help would be much appreciated.
I will try to send some doc patches. But I may have a few questions ;-)
Show 22 quoted lines
> Here's an in-depth explanation: > > This is what git-svn does when issued "commit remotes/git-svn..master": > 1. git-rev-list remotes/git-svn..master | tac => > 0681f7614c342b85b91d909ff02a9a966a44c3f4 > 0cccf3753b472b52a93154ed8021499055bb3923 > > 0cccf3753b472b52a93154ed8021499055bb3923 is the result of your > 'git pull . remotes/git-svn', correct? > And 0681f7614c342b85b91d909ff02a9a966a44c3f4 was made to git before > the pull. > > So this is what git-svn does, it commits the output of: > diff-tree f5ebf17f7e460d3bc3de72ab381c72dc76d26936 0681f7614c342b85b91d909ff02a9a966a44c3f4 > (f5eb... is remotes/git-svn at that point). > > If the SVN/SSL connection had not died, it would've then proceeded to > commit the output of: > > diff-tree 1b75d81a95da328f0b0d06b7562fdb48970b4c98 0cccf3753b472b52a93154ed8021499055bb3923 > Where 1b75d81a95da328f0b0d06b7562fdb48970b4c98 is the output of your > previous commit (r19467)
I think I'm getting it. Thank you very much for providing these details.
Show 6 quoted lines
> Personally, I've been starting to favor 'git-svn commit-diff' myself > over 'git-svn commit', as it leaves cleaner history and makes git-svn > fetch results reproducable on different machines. > > [1] - unfortunately, I seem to have forgotten about it since I use > commit-diff more often these days :x
I think commit-diff might be what I want to be using too, but I need to contribute some documentation for it before I can read the man page and start using it ;-)
An example call to git-svn commit-diff would be very helpful, I suspect.
I will have a look...
While I'm thinking of it, it would be really nice for git-svn's commit and commit-diff to have a dry-run type of flag. Commits to your own git repos are easy to correct, but those made on some other public scm are less pretty.
Cheers,
+ seth