Why did "hg push", push my local bookmark to remote?
Jaikiran Pai
jai.forums2013 at gmail.com
Fri Feb 6 06:25:47 UTC 2015
While looking more into this, I just happened to see this thread in
mercurial-dev mailing list from 2012 which is exactly the
situation/problem that I am running into (like Alice, from Matt
Mackall's example)
http://selenic.com/pipermail/mercurial-devel/2012-June/040831.html. It
looked like there was a proposal to change this current behaviour but I
am guessing it was never done (since I still run into this with latest
3.3 version). Was there a reason the proposal was dropped?
-Jaikiran
On Friday 06 February 2015 11:50 AM, Jaikiran Pai wrote:
> Hi Sean,
>
> Thanks for responding. My comments are inline.
>
> On Friday 06 February 2015 11:27 AM, Sean Farley wrote:
>> Jaikiran Pai writes:
>>
>>> I used to be a git user but have been using mercurial in a recent
>>> project, for a while now. Just recently, I decided to use the
>>> "bookmark"
>>> feature of mercurial to have lightweight branches similar to git. The
>>> documentation at various places about bookmark suggests that if I
>>> have a
>>> (local) bookmark and commits in that booking and I'm pushing to a
>>> remote
>>> repository, then the commits to the bookmark will *not* be pushed to
>>> the
>> Incorrect. The commits will be pushed depending on the revset you
>> requested to be pushed (by default all commits are pushed).
> So it looks like I completely misunderstood the documentation
> (http://mercurial.selenic.com/wiki/Bookmarks) about bookmarks. I
> considered them to be local branches (like in git) *and* the commits
> being local too.
>
> So from what I understand then, there's no way to limit the visibility
> of the commit from the remote repo? In other words, no way to hide my
> local changes from the remote repo? (I see that you suggest a alias
> for this and I'll come to that later).
>
> The way I was planning to use bookmarks was something like this:
>
> 1. Have a local workspace which points to 2 different remote repos.
> Remote repo 1 points to "upstream" which is used by the entire team
> and remote rep 2 points to my own private repository hosted remotely
> (example bitbucket).
>
> 2. While working on a major feature, I create a local bookmark
> "foo-bar" and start committing it to it. I don't want any of these
> commits to show up in "upstream" remote repo till I explicitly pull
> them into the default branch and push them to that repo. I however,
> want to have these changes available/backed up in my private remote
> repo, so I keep doing an explicit "bookmark push" so that changes
> belonging to this bookmark are visible in my private remote repo.
>
> From what I gather, that probably won't work without being extra
> careful (i.e. a plain hg push can result in the upstream repo
> receiving my commits from the bookmark).
>
>>
>> Only the bookmark itself will be pushed if the remote server has it.
> To be clear, when you say a bookmark itself will be pushed, do you
> mean the metadata related to the bookmark will be pushed? And in cases
> where the remote repo already has the bookmark, the metadata (like
> what's the latest commit in it) will be updated?
>
>
>>
>> You probably want to create an alias called 'nudge':
>>
>> ~/.hgrc:
>>
>> [alias]
>> nudge = push -r .
>
> So would that mean, I would do:
>
> hg bookmark "foo-bar" // new bookmark
> hg up foo-bar // up to the bookmark
> .. do changes
> hg commit -m "test commit to bookmark"
> hg nudge
>
> So in that case, it wouldn't push anything to remote since only local
> bookmark has had new commit? Did I get it right? I'm going to give it
> a try locally too, to see what it does.
>
> Overall, I am bit surprised that the bookmarks which are advertised as
> local only entities (unless explicitly made remote) and as lightweight
> branches similar to git work this way, out of the box.
>
> -Jaikiran
>
>
More information about the Mercurial
mailing list