Mercurial > hg
annotate hgext/bookmarks.py @ 7550:fead6cf99a09
bookmarks: set the current bookmark to the new name if we rename the current bookmark
If we rename the current bookmark, we have to set the current bookmark
to the new name.
author | David Soria Parra <dsp@php.net> |
---|---|
date | Thu, 18 Dec 2008 10:51:11 +0100 |
parents | 9b64589b1112 |
children | a9221c7f51a4 |
rev | line source |
---|---|
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
1 # Mercurial extension to provide the 'hg bookmark' command |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
2 # |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
3 # Copyright 2008 David Soria Parra <dsp@php.net> |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
4 # |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
6 # of the GNU General Public License, incorporated herein by reference. |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
7 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
8 '''mercurial bookmarks |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
9 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
10 Mercurial bookmarks are local moveable pointers to changesets. Every |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
11 bookmark points to a changeset identified by its hash. If you commit a |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
12 changeset that is based on a changeset that has a bookmark on it, the |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
13 bookmark is forwarded to the new changeset. |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
14 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
15 It is possible to use bookmark names in every revision lookup (e.g. hg |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
16 merge, hg update). |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
17 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
18 The bookmark extension offers the possiblity to have a more git-like experience |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
19 by adding the following configuration option to your .hgrc: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
20 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
21 [bookmarks] |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
22 track.current = True |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
23 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
24 This will cause bookmarks to track the bookmark that you are currently on, and |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
25 just updates it. This is similar to git's approach of branching. |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
26 ''' |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
27 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
28 from mercurial.commands import templateopts, hex, short |
7478
4c3e0ad58c5b
bookmarks: Adds support for a --non-bookmarked option to push
Stefan Rusek <stefan@rusek.org>
parents:
7316
diff
changeset
|
29 from mercurial import extensions |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
30 from mercurial.i18n import _ |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
31 from mercurial import cmdutil, util, commands, changelog |
7256
df800e004077
bookmarks: Avoid unconditional forwarding of bookmarks for the null revision
Joel Rosdahl <joel@rosdahl.net>
parents:
7255
diff
changeset
|
32 from mercurial.node import nullid, nullrev |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
33 from mercurial.repo import RepoError |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
34 import mercurial, mercurial.localrepo, mercurial.repair, os |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
35 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
36 def parse(repo): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
37 '''Parse .hg/bookmarks file and return a dictionary |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
38 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
39 Bookmarks are stored as {HASH}\s{NAME}\n (localtags format) values |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
40 in the .hg/bookmarks file. They are read by the parse() method and |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
41 returned as a dictionary with name => hash values. |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
42 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
43 The parsed dictionary is cached until a write() operation is done. |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
44 ''' |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
45 try: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
46 if repo._bookmarks: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
47 return repo._bookmarks |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
48 repo._bookmarks = {} |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
49 for line in repo.opener('bookmarks'): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
50 sha, refspec = line.strip().split(' ', 1) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
51 repo._bookmarks[refspec] = repo.lookup(sha) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
52 except: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
53 pass |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
54 return repo._bookmarks |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
55 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
56 def write(repo, refs): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
57 '''Write bookmarks |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
58 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
59 Write the given bookmark => hash dictionary to the .hg/bookmarks file |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
60 in a format equal to those of localtags. |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
61 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
62 We also store a backup of the previous state in undo.bookmarks that |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
63 can be copied back on rollback. |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
64 ''' |
7253
8b81d1e2dc04
bookmarks: Only save undo.bookmarks if bookmarks exist
Joel Rosdahl <joel@rosdahl.net>
parents:
7252
diff
changeset
|
65 if os.path.exists(repo.join('bookmarks')): |
8b81d1e2dc04
bookmarks: Only save undo.bookmarks if bookmarks exist
Joel Rosdahl <joel@rosdahl.net>
parents:
7252
diff
changeset
|
66 util.copyfile(repo.join('bookmarks'), repo.join('undo.bookmarks')) |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
67 if current(repo) not in refs: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
68 setcurrent(repo, None) |
7550
fead6cf99a09
bookmarks: set the current bookmark to the new name if we rename the current bookmark
David Soria Parra <dsp@php.net>
parents:
7489
diff
changeset
|
69 file = repo.opener('bookmarks', 'w+') |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
70 for refspec, node in refs.items(): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
71 file.write("%s %s\n" % (hex(node), refspec)) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
72 file.close() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
73 |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
74 def current(repo): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
75 '''Get the current bookmark |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
76 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
77 If we use gittishsh branches we have a current bookmark that |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
78 we are on. This function returns the name of the bookmark. It |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
79 is stored in .hg/bookmarks.current |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
80 ''' |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
81 if repo._bookmarkcurrent: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
82 return repo._bookmarkcurrent |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
83 mark = None |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
84 if os.path.exists(repo.join('bookmarks.current')): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
85 file = repo.opener('bookmarks.current') |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
86 mark = file.readline() |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
87 if mark == '': |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
88 mark = None |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
89 file.close() |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
90 repo._bookmarkcurrent = mark |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
91 return mark |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
92 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
93 def setcurrent(repo, mark): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
94 '''Set the name of the bookmark that we are currently on |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
95 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
96 Set the name of the bookmark that we are on (hg update <bookmark>). |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
97 The name is recoreded in .hg/bookmarks.current |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
98 ''' |
7484
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
99 if current(repo) == mark: |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
100 return |
7484
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
101 |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
102 refs = parse(repo) |
7484
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
103 |
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
104 'do not update if we do update to an rev equal to the current bookmark' |
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
105 if (mark not in refs and |
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
106 current(repo) and refs[current(repo)] == repo.changectx('.').node()): |
167853c7e54a
bookmarks: do not overwrite bookmarks.current if not necessary
David Soria Parra <dsp@php.net>
parents:
7483
diff
changeset
|
107 return |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
108 if mark not in refs: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
109 mark = '' |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
110 file = repo.opener('bookmarks.current', 'w+') |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
111 file.write(mark) |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
112 file.close() |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
113 repo._bookmarkcurrent = mark |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
114 |
7255
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
115 def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False, rename=None): |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
116 '''mercurial bookmarks |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
117 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
118 Bookmarks are pointers to certain commits that move when |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
119 commiting. Bookmarks are local. They can be renamed, copied and |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
120 deleted. It is possible to use bookmark names in 'hg merge' and 'hg |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
121 update' to update to a given bookmark. |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
122 |
7257
7fb0e130cf14
bookmarks: Improve documentation
Joel Rosdahl <joel@rosdahl.net>
parents:
7256
diff
changeset
|
123 You can use 'hg bookmark NAME' to set a bookmark on the current |
7fb0e130cf14
bookmarks: Improve documentation
Joel Rosdahl <joel@rosdahl.net>
parents:
7256
diff
changeset
|
124 tip with the given name. If you specify a revision using -r REV |
7fb0e130cf14
bookmarks: Improve documentation
Joel Rosdahl <joel@rosdahl.net>
parents:
7256
diff
changeset
|
125 (where REV may be an existing bookmark), the bookmark is set to |
7fb0e130cf14
bookmarks: Improve documentation
Joel Rosdahl <joel@rosdahl.net>
parents:
7256
diff
changeset
|
126 that revision. |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
127 ''' |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
128 hexfn = ui.debugflag and hex or short |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
129 marks = parse(repo) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
130 cur = repo.changectx('.').node() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
131 |
7255
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
132 if rename: |
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
133 if rename not in marks: |
7251
444d88175e33
bookmarks: Fix spelling and grammar
Joel Rosdahl <joel@rosdahl.net>
parents:
7250
diff
changeset
|
134 raise util.Abort(_("a bookmark of this name does not exist")) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
135 if mark in marks and not force: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
136 raise util.Abort(_("a bookmark of the same name already exists")) |
7254
d892211d670e
bookmarks: Require new bookmark name when renaming
Joel Rosdahl <joel@rosdahl.net>
parents:
7253
diff
changeset
|
137 if mark is None: |
d892211d670e
bookmarks: Require new bookmark name when renaming
Joel Rosdahl <joel@rosdahl.net>
parents:
7253
diff
changeset
|
138 raise util.Abort(_("new bookmark name required")) |
7255
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
139 marks[mark] = marks[rename] |
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
140 del marks[rename] |
7550
fead6cf99a09
bookmarks: set the current bookmark to the new name if we rename the current bookmark
David Soria Parra <dsp@php.net>
parents:
7489
diff
changeset
|
141 if current(repo) == rename: |
fead6cf99a09
bookmarks: set the current bookmark to the new name if we rename the current bookmark
David Soria Parra <dsp@php.net>
parents:
7489
diff
changeset
|
142 setcurrent(repo, mark) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
143 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
144 return |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
145 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
146 if delete: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
147 if mark == None: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
148 raise util.Abort(_("bookmark name required")) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
149 if mark not in marks: |
7251
444d88175e33
bookmarks: Fix spelling and grammar
Joel Rosdahl <joel@rosdahl.net>
parents:
7250
diff
changeset
|
150 raise util.Abort(_("a bookmark of this name does not exist")) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
151 del marks[mark] |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
152 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
153 return |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
154 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
155 if mark != None: |
7259
18c23375861f
bookmarks: Correctly reject newlines in bookmark names
Joel Rosdahl <joel@rosdahl.net>
parents:
7258
diff
changeset
|
156 if "\n" in mark: |
18c23375861f
bookmarks: Correctly reject newlines in bookmark names
Joel Rosdahl <joel@rosdahl.net>
parents:
7258
diff
changeset
|
157 raise util.Abort(_("bookmark name cannot contain newlines")) |
7260
eb91b9ce2c19
bookmarks: Strip bookmark names of whitespace, just like tag names
Joel Rosdahl <joel@rosdahl.net>
parents:
7259
diff
changeset
|
158 mark = mark.strip() |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
159 if mark in marks and not force: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
160 raise util.Abort(_("a bookmark of the same name already exists")) |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
161 if ((mark in repo.branchtags() or mark == repo.dirstate.branch()) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
162 and not force): |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
163 raise util.Abort( |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
164 _("a bookmark cannot have the name of an existing branch")) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
165 if rev: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
166 marks[mark] = repo.lookup(rev) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
167 else: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
168 marks[mark] = repo.changectx('.').node() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
169 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
170 return |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
171 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
172 if mark == None: |
7258
9bd051efbdd6
bookmarks: Require a bookmark name when a revision is specified
Joel Rosdahl <joel@rosdahl.net>
parents:
7257
diff
changeset
|
173 if rev: |
9bd051efbdd6
bookmarks: Require a bookmark name when a revision is specified
Joel Rosdahl <joel@rosdahl.net>
parents:
7257
diff
changeset
|
174 raise util.Abort(_("bookmark name required")) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
175 if len(marks) == 0: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
176 ui.status("no bookmarks set\n") |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
177 else: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
178 for bmark, n in marks.iteritems(): |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
179 if ui.configbool('bookmarks', 'track.current'): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
180 prefix = (bmark == current(repo) and n == cur) and '*' or ' ' |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
181 else: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
182 prefix = (n == cur) and '*' or ' ' |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
183 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
184 ui.write(" %s %-25s %d:%s\n" % ( |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
185 prefix, bmark, repo.changelog.rev(n), hexfn(n))) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
186 return |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
187 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
188 def _revstostrip(changelog, node): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
189 srev = changelog.rev(node) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
190 tostrip = [srev] |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
191 saveheads = [] |
7283
b19c0200c90b
bookmarks: fix strip handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7280
diff
changeset
|
192 for r in xrange(srev, len(changelog)): |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
193 parents = changelog.parentrevs(r) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
194 if parents[0] in tostrip or parents[1] in tostrip: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
195 tostrip.append(r) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
196 if parents[1] != nullrev: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
197 for p in parents: |
7283
b19c0200c90b
bookmarks: fix strip handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7280
diff
changeset
|
198 if p not in tostrip and p > srev: |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
199 saveheads.append(p) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
200 return [r for r in tostrip if r not in saveheads] |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
201 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
202 def strip(ui, repo, node, backup="all"): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
203 """Strip bookmarks if revisions are stripped using |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
204 the mercurial.strip method. This usually happens during |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
205 qpush and qpop""" |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
206 revisions = _revstostrip(repo.changelog, node) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
207 marks = parse(repo) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
208 update = [] |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
209 for mark, n in marks.items(): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
210 if repo.changelog.rev(n) in revisions: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
211 update.append(mark) |
7280
810ca383da9c
remove unused variables
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7262
diff
changeset
|
212 oldstrip(ui, repo, node, backup) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
213 if len(update) > 0: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
214 for m in update: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
215 marks[m] = repo.changectx('.').node() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
216 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
217 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
218 oldstrip = mercurial.repair.strip |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
219 mercurial.repair.strip = strip |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
220 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
221 def reposetup(ui, repo): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
222 if not isinstance(repo, mercurial.localrepo.localrepository): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
223 return |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
224 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
225 # init a bookmark cache as otherwise we would get a infinite reading |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
226 # in lookup() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
227 repo._bookmarks = None |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
228 repo._bookmarkcurrent = None |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
229 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
230 class bookmark_repo(repo.__class__): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
231 def rollback(self): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
232 if os.path.exists(self.join('undo.bookmarks')): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
233 util.rename(self.join('undo.bookmarks'), self.join('bookmarks')) |
7250
352627bcafc3
bookmarks: Remove trailing space
Joel Rosdahl <joel@rosdahl.net>
parents:
7239
diff
changeset
|
234 return super(bookmark_repo, self).rollback() |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
235 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
236 def lookup(self, key): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
237 if self._bookmarks is None: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
238 self._bookmarks = parse(self) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
239 if key in self._bookmarks: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
240 key = self._bookmarks[key] |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
241 return super(bookmark_repo, self).lookup(key) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
242 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
243 def commit(self, *k, **kw): |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
244 """Add a revision to the repository and |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
245 move the bookmark""" |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
246 node = super(bookmark_repo, self).commit(*k, **kw) |
7262
3cbadcf28a4c
bookmarks: do nothing if commit was not successful.
Dmitriy Taychenachev <dimichxp@gmail.com>
parents:
7260
diff
changeset
|
247 if node == None: |
3cbadcf28a4c
bookmarks: do nothing if commit was not successful.
Dmitriy Taychenachev <dimichxp@gmail.com>
parents:
7260
diff
changeset
|
248 return None |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
249 parents = repo.changelog.parents(node) |
7256
df800e004077
bookmarks: Avoid unconditional forwarding of bookmarks for the null revision
Joel Rosdahl <joel@rosdahl.net>
parents:
7255
diff
changeset
|
250 if parents[1] == nullid: |
df800e004077
bookmarks: Avoid unconditional forwarding of bookmarks for the null revision
Joel Rosdahl <joel@rosdahl.net>
parents:
7255
diff
changeset
|
251 parents = (parents[0],) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
252 marks = parse(repo) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
253 update = False |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
254 for mark, n in marks.items(): |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
255 if ui.configbool('bookmarks', 'track.current'): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
256 if mark == current(repo) and n in parents: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
257 marks[mark] = node |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
258 update = True |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
259 else: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
260 if n in parents: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
261 marks[mark] = node |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
262 update = True |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
263 if update: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
264 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
265 return node |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
266 |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
267 def addchangegroup(self, source, srctype, url, emptyok=False): |
7316
9737041646bc
bookmarks: Use dirstate to determine the current node in addchangegroup
David Soria Parra <dsp@php.net>
parents:
7283
diff
changeset
|
268 parents = repo.dirstate.parents() |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
269 |
7252
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
270 result = super(bookmark_repo, self).addchangegroup( |
104a8324798e
bookmarks: Avoid long lines
Joel Rosdahl <joel@rosdahl.net>
parents:
7251
diff
changeset
|
271 source, srctype, url, emptyok) |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
272 if result > 1: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
273 # We have more heads than before |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
274 return result |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
275 node = repo.changelog.tip() |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
276 marks = parse(repo) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
277 update = False |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
278 for mark, n in marks.items(): |
7316
9737041646bc
bookmarks: Use dirstate to determine the current node in addchangegroup
David Soria Parra <dsp@php.net>
parents:
7283
diff
changeset
|
279 if n in parents: |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
280 marks[mark] = node |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
281 update = True |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
282 if update: |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
283 write(repo, marks) |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
284 return result |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
285 |
7480
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
286 def tags(self): |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
287 """Merge bookmarks with normal tags""" |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
288 if self.tagscache: |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
289 return self.tagscache |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
290 |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
291 tagscache = super(bookmark_repo, self).tags() |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
292 tagscache.update(parse(repo)) |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
293 return tagscache |
31f70804f1b1
bookmarks: Include bookmarks in tags.
Martin Geisler <mg...@daimi.au.dk>
parents:
7479
diff
changeset
|
294 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
295 repo.__class__ = bookmark_repo |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
296 |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
297 def updatecurbookmark(orig, ui, repo, *args, **opts): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
298 '''Set the current bookmark |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
299 |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
300 If the user updates to a bookmark we update the .hg/bookmarks.current |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
301 file. |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
302 ''' |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
303 res = orig(ui, repo, *args, **opts) |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
304 rev = opts['rev'] |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
305 if not rev and len(args) > 0: |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
306 rev = args[0] |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
307 setcurrent(repo, rev) |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
308 return res |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
309 |
7478
4c3e0ad58c5b
bookmarks: Adds support for a --non-bookmarked option to push
Stefan Rusek <stefan@rusek.org>
parents:
7316
diff
changeset
|
310 def uisetup(ui): |
4c3e0ad58c5b
bookmarks: Adds support for a --non-bookmarked option to push
Stefan Rusek <stefan@rusek.org>
parents:
7316
diff
changeset
|
311 'Replace push with a decorator to provide --non-bookmarked option' |
7481
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
312 if ui.configbool('bookmarks', 'track.current'): |
5f681a143ede
bookmarks: more git-like branches
David Soria Parra <dsp@php.net>
parents:
7480
diff
changeset
|
313 extensions.wrapcommand(commands.table, 'update', updatecurbookmark) |
7478
4c3e0ad58c5b
bookmarks: Adds support for a --non-bookmarked option to push
Stefan Rusek <stefan@rusek.org>
parents:
7316
diff
changeset
|
314 |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
315 cmdtable = { |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
316 "bookmarks": |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
317 (bookmark, |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
318 [('f', 'force', False, _('force')), |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
319 ('r', 'rev', '', _('revision')), |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
320 ('d', 'delete', False, _('delete a given bookmark')), |
7255
69e431ea124d
bookmarks: Rename --move to --rename
Joel Rosdahl <joel@rosdahl.net>
parents:
7254
diff
changeset
|
321 ('m', 'rename', '', _('rename a given bookmark'))], |
7239
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
322 _('hg bookmarks [-d] [-m NAME] [-r NAME] [NAME]')), |
135003a470f3
Bookmarks: Add the bookmarks extension
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
323 } |