[ 
https://issues.jenkins-ci.org/browse/JENKINS-10558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=162226#comment-162226
 ] 

jglick commented on JENKINS-10558:
----------------------------------

http://mercurial.selenic.com/wiki/Bookmarks is the current feature description.

Since it makes no sense to specify both a branch name and a bookmark, probably 
the UI should be a checkbox that indicates that the "branch" field is really a 
bookmark name. (It would be great if the plugin could automatically detect 
this, but I doubt that is possible.)

Pull requests implementing this feature without affecting existing usage would 
be considered. (Wujek's change may make subtle changes to behavior of jobs not 
using bookmarks; the use of {{\--rev}} rather than {{\--branch}} is 
intentional. It also includes no new tests, is long out of date with 
{{master}}, and does not seem to be available as a pull request anyway.)
                
> Jenkins mercurial plugin - add support for bookmarks
> ----------------------------------------------------
>
>                 Key: JENKINS-10558
>                 URL: https://issues.jenkins-ci.org/browse/JENKINS-10558
>             Project: Jenkins
>          Issue Type: New Feature
>          Components: mercurial
>    Affects Versions: current
>         Environment: all
>            Reporter: wujek srujek
>            Assignee: Kohsuke Kawaguchi
>            Priority: Critical
>
> Mercurial plugin supports branches, which is nice. However, there are a lot 
> of people, especially these coming from git, who think that such named 
> branches are no good (they stay for ever, the branch is baked into the 
> commit), and prefer using bookmarks* instead. There seems to be a lot of 
> momentum around that extension, which culminated in it being incorporated 
> into mercurial core since hg 1.8 (which means it is not an extension any 
> more; rather, it is a first-class citizen now).
> * http://mercurial.selenic.com/wiki/BookmarksExtension, 
> http://www.mronge.com/2009/04/01/a-sample-mercurial-bookmark-workflow, 
> http://groups.google.com/group/mercurial_general/browse_thread/thread/5f7d2d7c5cfc109b?fwc=2
>  (post #4 by Daniel Carrera is really good)
> Bookmarks is the closest thing that mercurial currently supports that 
> resembles git-like branches. This is what we would love to use (as we share 
> the view that such long running named branches are no good), but we can't 
> since the Jenkins plugin doesn't support this (we would like to create ad-hoc 
> Jenkins jobs for our features (topic branches), which are bookmarks, not 
> branches, and once the feature is implemented, we drop the Jenkins job).
> A basic bookmarks workflow (in a repository):
> $ hg bookmark feature_x
> ... work work work
> $ hg commit -m 'some feature_x code'
> ... push to some canonical repo for others to see
> $ hg push -B feature_x -f // -f most likely needed as bookmarks are simply 
> 'named heads' - but it doesn't matter for Jenkins
> Now some other collaborator:
> $ hg incoming -B // shows that there is a new bookmark, 'feature_x'
> $ hg pull -B feature_x
> and they can now start working on this bookmark ('lightweight branch').
> I tried simply changing the value of the 'branch' field in my project 
> configuration, but it doesn't work. But it is very close. What seems not to 
> work is the fact that Jenkins doesn't know the '-B' switch, and doesn't know 
> that I want to import the bookmark. What Jenkins does is this (shortened a 
> little, the template is not used):
> $ hg incoming --quiet --bundle hg.bundle --template "..." --rev feature_x
> $ hg unbundle hg.bundle
> 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 update --clean --rev feature_x
> abort: unknown revision 'test'!
> This means that the incoming changes were found with the bookmark name and 
> were pulled, but the bookmark itself wasn't imported, and doesn't exist 
> locally - and update fails. With the '-B' switch, it would work fine (tested 
> on the command line):
> $ hg incoming --quiet --bundle hg.bundle --template "..." --rev feature_x
> $ hg unbundle hg.bundle
> 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 pull -B feature_x // <----------------------------- that's the missing 
> link
> no changes found
> importing bookmark test
> $ hg update --clean --rev feature_x
> 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> With the single call to pull the bookmark (which effectively imports it) 
> makes it work!
> Of course, there could be a mix of branch and bookmark, so the 'incoming' 
> should use the branch name, and if and only if a bookmark is specified, a 
> 'pull -B <bookmark_name>' should be issued, and the update should use the 
> bookmark and not the branch. This means there should be some additional field 
> for the bookmark, and some additional logic, but not that much, I think?
> I will take a look at the source code on GitHub to see if maybe I could help 
> you with that, if you are interested?
> I as setting it as critical, as it has the potential to influence the 
> decision whether we can use Jenkins or not for this project. Naturally, you 
> are the bosses so feel free to squash it.
> As a side note: what is the relationship between the Jenkins Mercurial Plugin 
> (version 1.37, code on GitHub) and Hudson Mercurial Plugin (version 1.35, 
> couldn't find a repository)? I am asking since we use both, and it would be 
> nice if the code could be written once and work for both servers, of course ;d
> Regards,
> wujek

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to