Show More
@@ -0,0 +1,49 b'' | |||
|
1 | ||
|
2 | $ mkcommit() { | |
|
3 | > echo "$1" > "$1" | |
|
4 | > hg add "$1" | |
|
5 | > hg ci -m "add $1" | |
|
6 | > } | |
|
7 | $ getid() { | |
|
8 | > hg id --debug -ir "desc('$1')" | |
|
9 | > } | |
|
10 | ||
|
11 | ||
|
12 | $ hg init tmpa | |
|
13 | $ cd tmpa | |
|
14 | ||
|
15 | Killing a single changeset without replacement | |
|
16 | ||
|
17 | $ mkcommit kill_me | |
|
18 | $ hg debugobsolete -d '0 0' `getid kill_me` -u babar | |
|
19 | $ cd .. | |
|
20 | ||
|
21 | Killing a single changeset with replacement | |
|
22 | ||
|
23 | $ hg init tmpb | |
|
24 | $ cd tmpb | |
|
25 | $ mkcommit a | |
|
26 | $ mkcommit b | |
|
27 | $ mkcommit original_c | |
|
28 | $ hg up "desc('b')" | |
|
29 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
30 | $ mkcommit new_c | |
|
31 | created new head | |
|
32 | $ hg debugobsolete `getid original_c` `getid new_c` -d '56 12' | |
|
33 | ||
|
34 | do it again (it read the obsstore before adding new changeset) | |
|
35 | ||
|
36 | $ hg up '.^' | |
|
37 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
38 | $ mkcommit new_2_c | |
|
39 | created new head | |
|
40 | $ hg debugobsolete -d '1337 0' `getid new_c` `getid new_2_c` | |
|
41 | ||
|
42 | Register two markers with a missing node | |
|
43 | ||
|
44 | $ hg up '.^' | |
|
45 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
46 | $ mkcommit new_3_c | |
|
47 | created new head | |
|
48 | $ hg debugobsolete -d '1338 0' `getid new_2_c` 1337133713371337133713371337133713371337 | |
|
49 | $ hg debugobsolete -d '1339 0' 1337133713371337133713371337133713371337 `getid new_3_c` |
@@ -2049,6 +2049,21 b' def debugknown(ui, repopath, *ids, **opt' | |||
|
2049 | 2049 | flags = repo.known([bin(s) for s in ids]) |
|
2050 | 2050 | ui.write("%s\n" % ("".join([f and "1" or "0" for f in flags]))) |
|
2051 | 2051 | |
|
2052 | @command('debugobsolete', [] + commitopts2, | |
|
2053 | _('OBSOLETED [REPLACEMENT] [REPL...')) | |
|
2054 | def debugobsolete(ui, repo, precursor, *successors, **opts): | |
|
2055 | """create arbitrary obsolete marker""" | |
|
2056 | metadata = {} | |
|
2057 | if 'date' in opts: | |
|
2058 | metadata['date'] = opts['date'] | |
|
2059 | metadata['user'] = opts['user'] or ui.username() | |
|
2060 | succs = tuple(bin(succ) for succ in successors) | |
|
2061 | l = repo.lock() | |
|
2062 | try: | |
|
2063 | repo.obsstore.create(bin(precursor), succs, 0, metadata) | |
|
2064 | finally: | |
|
2065 | l.release() | |
|
2066 | ||
|
2052 | 2067 | @command('debugpushkey', [], _('REPO NAMESPACE [KEY OLD NEW]')) |
|
2053 | 2068 | def debugpushkey(ui, repopath, namespace, *keyinfo, **opts): |
|
2054 | 2069 | '''access the pushkey key/value protocol |
@@ -135,6 +135,23 b' class obsstore(object):' | |||
|
135 | 135 | self.precursors = {} |
|
136 | 136 | self.successors = {} |
|
137 | 137 | |
|
138 | def create(self, prec, succs=(), flag=0, metadata=None): | |
|
139 | """obsolete: add a new obsolete marker | |
|
140 | ||
|
141 | * ensuring it is hashable | |
|
142 | * check mandatory metadata | |
|
143 | * encode metadata | |
|
144 | """ | |
|
145 | if metadata is None: | |
|
146 | metadata = {} | |
|
147 | if len(prec) != 20: | |
|
148 | raise ValueError(prec) | |
|
149 | for succ in succs: | |
|
150 | if len(succ) != 20: | |
|
151 | raise ValueError(prec) | |
|
152 | marker = (str(prec), tuple(succs), int(flag), encodemeta(metadata)) | |
|
153 | self.add(marker) | |
|
154 | ||
|
138 | 155 | def add(self, marker): |
|
139 | 156 | """Add a new marker to the store |
|
140 | 157 |
@@ -86,6 +86,7 b' Show debug commands if there are no othe' | |||
|
86 | 86 | debugindexdot |
|
87 | 87 | debuginstall |
|
88 | 88 | debugknown |
|
89 | debugobsolete | |
|
89 | 90 | debugpushkey |
|
90 | 91 | debugpvec |
|
91 | 92 | debugrebuildstate |
@@ -236,6 +237,7 b' Show all commands + options' | |||
|
236 | 237 | debugindexdot: |
|
237 | 238 | debuginstall: |
|
238 | 239 | debugknown: |
|
240 | debugobsolete: date, user | |
|
239 | 241 | debugpushkey: |
|
240 | 242 | debugpvec: |
|
241 | 243 | debugrebuildstate: rev |
General Comments 0
You need to be logged in to leave comments.
Login now