git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Eric Wong <normalperson@yhbt.net>
Cc: Brice Goglin <bgoglin@debian.org>,
	557477-forwarded@bugs.debian.org, 557477@bugs.debian.org,
	git@vger.kernel.org, Alex Vandiver <alex@chmrr.net>,
	Pedro Melo <melo@simplicidade.org>, Sam Vilain <sam@vilain.net>
Subject: Re: git-svn: git svn dcommit doesn't handle network failure
Date: Fri, 8 Jan 2010 19:00:58 -0600	[thread overview]
Message-ID: <20100109010058.GA11922@progeny.tock> (raw)
In-Reply-To: <20091122112434.29914.59452.reportbug@localhost.localdomain>

Hi Eric,

'git svn dcommit' does not seem to have any error recovery built in,
so the user is put in a not-great situation if the network cable is
pulled in the middle, as in the report below.

See also <http://thread.gmane.org/gmane.comp.version-control.git/70458>

Ideally, it would be nice if users could pretend that each push of
a single commit is an atomic operation that rewrites the corresponding
local commit at the same time.  In other words, to clean up we might
unapply the unpushed patch, then run rebase_cmd().

What do you think?

Brice Goglin wrote:

> Package: git-svn
> Version: 1:1.6.5-1
> Severity: important
> 
> Hello,
> 
> If the network fails during dcommit, git svn gets totally screwed up.
> It will give you the prompt back with HEAD pointing to the last SVN-pushed
> commit, and the next one applied and not git-committed.
> 
> $ git svn dcommit
> Committing to svn+ssh://bgoglin@scm.gforge.inria.fr/svn/knem/branches/rma ...
> 	M	common/knem_io.h
> Committed r237
> 	M	common/knem_io.h
> r237 = f839e16b94052f8b71aa4b66124b37a8337182e0 (refs/remotes/rma)
> No changes between current HEAD and refs/remotes/rma
> Resetting to the latest refs/remotes/rma
> Unstaged changes after reset:
> M	common/knem_io.h
> M	driver/linux/knem_main.c
> ssh: connect to host scm.gforge.inria.fr port 22: Connection timed out
> Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/SVN/Core.pm line 584.
> Network connection closed unexpectedly:  at /usr/lib/git-core/git-svn line 557
> 
> 
> Now the only way I found to solve this mess is to git-reset --hard,
> git checkout the old HEAD again, and git svn dcommit the remaining stuff.
> 
> The big problem is that I don't see any easy way to find the old HEAD.
> I had to look back in my terminal history in case there's still the output
> of a git log showing the old HEAD commitid.
> 
> I don't know how dcommit works internally, but my feeling is that it
> should go to a new temporary branch during dcommit. This way, we would
> just have to checkout the non-temporary branch on failure. For now,
> I do it manually in case the SVN server fails again, but that's really
> annoying.
> 
> thanks,
> Brice

       reply	other threads:[~2010-01-09  1:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20091122112434.29914.59452.reportbug@localhost.localdomain>
2010-01-09  1:00 ` Jonathan Nieder [this message]
2010-01-09  2:13   ` git-svn: git svn dcommit doesn't handle network failure Eric Wong
2010-01-09  7:57     ` Bug#557477: " Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100109010058.GA11922@progeny.tock \
    --to=jrnieder@gmail.com \
    --cc=557477-forwarded@bugs.debian.org \
    --cc=557477@bugs.debian.org \
    --cc=alex@chmrr.net \
    --cc=bgoglin@debian.org \
    --cc=git@vger.kernel.org \
    --cc=melo@simplicidade.org \
    --cc=normalperson@yhbt.net \
    --cc=sam@vilain.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).