git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Eric WongNext: Eric Wong
Message 5 of 8 in “git-svn problem: unexpected files/diffs in commit”
  1. Seth FalconAug 25, 2006
  2. Eric WongAug 25, 2006
  3. git-svn: establish new connections on commit after forkEric Wong, Aug 25, 2006
  4. git-svn: recommend rebase for syncing against an SVN repoEric Wong, Aug 25, 2006
  5. Seth FalconAug 26, 2006
  6. Eric WongAug 26, 2006
  7. git-svn: add the 'dcommit' commandEric Wong, Aug 26, 2006
  8. git-svn: stop repeatedly reusing the first commit message with dcommitEric Wong, Aug 26, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.