abort: push creates new remote heads!

Joseph Turian turian at gmail.com
Fri Apr 18 13:15:11 CDT 2008


Martin,

Thanks for the update! This was a very clear explanation for me.

  Joseph

On Thu, Apr 17, 2008 at 5:32 PM, Martin Geisler <mg at daimi.au.dk> wrote:

> "Joseph Turian" <turian at gmail.com> writes:
>
> > Help! I am using mercurial to do development with several other
> > persons. I didn't early enough, and now my repository is in a state
> > from which I am not sure how to recover:
> >
> > ==========
> >
> > turian at grenat:~/dev/theano 1$ hg push
> > pushing to ssh://[...]
> > searching for changes
> > abort: push creates new remote heads!
> > (did you forget to merge? use push -f to force)
> > turian at grenat:~/dev/theano 1$ hg pull
> > pulling from ssh://[...]
> > searching for changes
> > adding changesets
> > adding manifests
> > adding file changes
> > added 1 changesets with 1 changes to 1 files (+1 heads)
> > (run 'hg heads' to see heads, 'hg merge' to merge)
> > turian at grenat:~/dev/theano 1$ hg update
> > abort: crosses branches (use 'hg merge' or 'hg update -C' to discard
> > changes)
> > turian at grenat:~/dev/theano 1$ hg merge
> > abort: outstanding uncommitted changes
> >
> > ==========
> >
> > At this point, I am not sure what I should do. What is the correct way
> > to get my repository back in a clean state?
>
> The above message means that you changed your working copy but have not
> yet committed it. The following sequence of commands will create this
> situation:
>
>  % hg init repo
>  % cd repo
>  % echo foo > a.txt
>  % hg add
>  adding a.txt
>  % hg commit -m 1
>
> So far so good, one revision was made.
>
>  % cd ..
>  % hg clone repo clone
>  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>
> The repository was cloned.
>
>  % cd repo
>  % echo bar >> a.txt
>  % hg commit -m 2
>
> More work was done on repo.
>
>  % cd ../clone
>  % echo baz > b.txt
>  % hg add
>  adding b.txt
>  % hg commit -m 3
>
> Work done and committed on clone.
>
>  % echo quux >> b.txt
>  % hg glog
>  @  changeset:   1:afcbeeb30383
>  |  tag:         tip
>  |  user:        Martin Geisler <mg at daimi.au.dk>
>  |  date:        Thu Apr 17 23:19:19 2008 +0200
>  |  summary:     3
>  |
>  o  changeset:   0:02fd557d2d2b
>     user:        Martin Geisler <mg at daimi.au.dk>
>     date:        Thu Apr 17 23:19:18 2008 +0200
>     summary:     1
>
>  % hg id
>  afcbeeb30383+ tip
>
> More work on clone, but not yet committed. Notice how the 'hg id'
> command tells us that we are at changeset afcbeeb30383, but with local
> modifications (indicated by the '+').
>
>  % hg pull
>  pulling from /backup/mg/tmp/repo
>   searching for changes
>  adding changesets
>  adding manifests
>  adding file changes
>  added 1 changesets with 1 changes to 1 files (+1 heads)
>  (run 'hg heads' to see heads, 'hg merge' to merge)
>   % hg merge
>  abort: outstanding uncommitted changes
>
> This is what you tried and it fails since the working copy has not yet
> been committed. We can examine the situation with the glog command (from
> the Graph log extension):
>
>  % hg glog
>  o  changeset:   2:b3536c1a633e
>  |  tag:         tip
>  |  parent:      0:02fd557d2d2b
>  |  user:        Martin Geisler <mg at daimi.au.dk>
>  |  date:        Thu Apr 17 23:19:18 2008 +0200
>  |  summary:     2
>  |
>  | @  changeset:   1:afcbeeb30383
>  |/   user:        Martin Geisler <mg at daimi.au.dk>
>  |    date:        Thu Apr 17 23:19:19 2008 +0200
>  |    summary:     3
>  |
>  o  changeset:   0:02fd557d2d2b
>     user:        Martin Geisler <mg at daimi.au.dk>
>     date:        Thu Apr 17 23:19:18 2008 +0200
>     summary:     1
>
>  % hg id
>  afcbeeb30383+
>
> We are (still) on the afcbeeb30383 changeset with the local
> modification. Merging this would be dangerous since there would be no
> way for you to undo the merge if it turns out to be more difficult than
> you thought.
>
> The solution is simply to finish your changes in the clone and commit
> them. This will create a child revision to the afcbeeb30383 revision:
>
>  % hg commit -m 4
>  % hg glog
>  @  changeset:   3:e71851fd7ea5
>  |  tag:         tip
>  |  parent:      1:afcbeeb30383
>  |  user:        Martin Geisler <mg at daimi.au.dk>
>  |  date:        Thu Apr 17 23:25:34 2008 +0200
>  |  summary:     4
>  |
>  | o  changeset:   2:b3536c1a633e
>  | |  parent:      0:02fd557d2d2b
>  | |  user:        Martin Geisler <mg at daimi.au.dk>
>  | |  date:        Thu Apr 17 23:19:18 2008 +0200
>  | |  summary:     2
>  | |
>  o |  changeset:   1:afcbeeb30383
>  |/   user:        Martin Geisler <mg at daimi.au.dk>
>  |    date:        Thu Apr 17 23:19:19 2008 +0200
>  |    summary:     3
>  |
>  o  changeset:   0:02fd557d2d2b
>     user:        Martin Geisler <mg at daimi.au.dk>
>     date:        Thu Apr 17 23:19:18 2008 +0200
>     summary:     1
>
> You can merge like normal:
>
>  % hg merge
>  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>  (branch merge, don't forget to commit)
>  % hg commit -m 'Merged.'
>  % hg glog
>  @    changeset:   4:78a5a3fed121
>  |\   tag:         tip
>  | |  parent:      3:e71851fd7ea5
>  | |  parent:      2:b3536c1a633e
>  | |  user:        Martin Geisler <mg at daimi.au.dk>
>  | |  date:        Thu Apr 17 23:27:45 2008 +0200
>  | |  summary:     Merged.
>  | |
>  | o  changeset:   3:e71851fd7ea5
>  | |  parent:      1:afcbeeb30383
>  | |  user:        Martin Geisler <mg at daimi.au.dk>
>  | |  date:        Thu Apr 17 23:25:34 2008 +0200
>  | |  summary:     4
>  | |
>  o |  changeset:   2:b3536c1a633e
>  | |  parent:      0:02fd557d2d2b
>  | |  user:        Martin Geisler <mg at daimi.au.dk>
>  | |  date:        Thu Apr 17 23:19:18 2008 +0200
>  | |  summary:     2
>  | |
>  | o  changeset:   1:afcbeeb30383
>  |/   user:        Martin Geisler <mg at daimi.au.dk>
>  |    date:        Thu Apr 17 23:19:19 2008 +0200
>  |    summary:     3
>  |
>  o  changeset:   0:02fd557d2d2b
>     user:        Martin Geisler <mg at daimi.au.dk>
>     date:        Thu Apr 17 23:19:18 2008 +0200
>     summary:     1
>
>
> This is the general rule of thumb when using Mercurial: finish your work
> and commit it before you start pulling in stuff from the outside world.
>
> --
> Martin Geisler
>
> VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
> SMPC (Secure Multi-Party Computation) to Python. See: http://viff.dk/.
>
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
>
>


-- 
Academic: http://www-etud.iro.umontreal.ca/~turian/
Business: http://www.metaoptimize.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://selenic.com/pipermail/mercurial/attachments/20080418/dc64705b/attachment.htm 


More information about the Mercurial mailing list