mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
phases: add a phases command to display and manipulate phases
This commit is contained in:
parent
029e0ada33
commit
a2fe028df9
@ -18,6 +18,7 @@ import merge as mergemod
|
|||||||
import minirst, revset, fileset
|
import minirst, revset, fileset
|
||||||
import dagparser, context, simplemerge
|
import dagparser, context, simplemerge
|
||||||
import random, setdiscovery, treediscovery, dagutil
|
import random, setdiscovery, treediscovery, dagutil
|
||||||
|
import phases as phasesmod
|
||||||
|
|
||||||
table = {}
|
table = {}
|
||||||
|
|
||||||
@ -4214,6 +4215,58 @@ def paths(ui, repo, search=None):
|
|||||||
else:
|
else:
|
||||||
ui.write("%s = %s\n" % (name, util.hidepassword(path)))
|
ui.write("%s = %s\n" % (name, util.hidepassword(path)))
|
||||||
|
|
||||||
|
@command('^phase',
|
||||||
|
[('p', 'public', False, _('Set changeset to public')),
|
||||||
|
('d', 'draft', False, _('Set changeset to draft')),
|
||||||
|
('s', 'secret', False, _('Set changeset to secret')),
|
||||||
|
('f', 'force', False, _('allow to move boundary backward')),
|
||||||
|
('r', 'rev', [], _('target revision')),
|
||||||
|
],
|
||||||
|
_('[-p|-d|-s] [-f] [-C] [-r] REV'))
|
||||||
|
def phase(ui, repo, *revs, **opts):
|
||||||
|
"""set or show the current phase name
|
||||||
|
|
||||||
|
With no argument, show the phase name of specified revisions.
|
||||||
|
|
||||||
|
With on one of `--public`, `--draft` or `--secret`, change the phase value.
|
||||||
|
|
||||||
|
Unless -f/--force is specified, :hg:`phase` won't move changeset from a
|
||||||
|
lower phase to an higher phase. Phase are ordered as follow:
|
||||||
|
|
||||||
|
public < draft < secret.
|
||||||
|
"""
|
||||||
|
# search for a unique phase argument
|
||||||
|
targetphase = None
|
||||||
|
for idx, name in enumerate(phasesmod.phasenames):
|
||||||
|
if opts[name]:
|
||||||
|
if targetphase is not None:
|
||||||
|
raise util.Abort('only one phase can be specified')
|
||||||
|
targetphase = idx
|
||||||
|
|
||||||
|
# look for specified revision
|
||||||
|
revs = list(revs)
|
||||||
|
revs.extend(opts['rev'])
|
||||||
|
if not revs:
|
||||||
|
raise NotImplementedError('working directory phase not implemented '
|
||||||
|
'yet')
|
||||||
|
lock = None
|
||||||
|
if targetphase is None:
|
||||||
|
# display
|
||||||
|
for ctx in repo.set('%lr', revs):
|
||||||
|
ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr()))
|
||||||
|
else:
|
||||||
|
lock = repo.lock()
|
||||||
|
try:
|
||||||
|
# set phase
|
||||||
|
nodes = [ctx.node() for ctx in repo.set('%lr', revs)]
|
||||||
|
if not nodes:
|
||||||
|
raise util.Abort(_('empty revision set'))
|
||||||
|
phasesmod.advanceboundary(repo, targetphase, nodes)
|
||||||
|
if opts['force']:
|
||||||
|
phasesmod.retractboundary(repo, targetphase, nodes)
|
||||||
|
finally:
|
||||||
|
lock.release()
|
||||||
|
|
||||||
def postincoming(ui, repo, modheads, optupdate, checkout):
|
def postincoming(ui, repo, modheads, optupdate, checkout):
|
||||||
if modheads == 0:
|
if modheads == 0:
|
||||||
return
|
return
|
||||||
|
@ -334,6 +334,7 @@ invalid global arguments for normal commands, aliases, and shell aliases
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -360,6 +361,7 @@ invalid global arguments for normal commands, aliases, and shell aliases
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -386,6 +388,7 @@ invalid global arguments for normal commands, aliases, and shell aliases
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
|
@ -26,6 +26,7 @@ basic commands:
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
|
@ -32,6 +32,7 @@ Show all commands except debug commands
|
|||||||
outgoing
|
outgoing
|
||||||
parents
|
parents
|
||||||
paths
|
paths
|
||||||
|
phase
|
||||||
pull
|
pull
|
||||||
push
|
push
|
||||||
recover
|
recover
|
||||||
@ -198,6 +199,7 @@ Show all commands + options
|
|||||||
init: ssh, remotecmd, insecure
|
init: ssh, remotecmd, insecure
|
||||||
log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, hidden, patch, git, limit, no-merges, stat, style, template, include, exclude
|
log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, hidden, patch, git, limit, no-merges, stat, style, template, include, exclude
|
||||||
merge: force, rev, preview, tool
|
merge: force, rev, preview, tool
|
||||||
|
phase: public, draft, secret, force, rev
|
||||||
pull: update, force, rev, bookmark, branch, ssh, remotecmd, insecure
|
pull: update, force, rev, bookmark, branch, ssh, remotecmd, insecure
|
||||||
push: force, rev, bookmark, branch, new-branch, ssh, remotecmd, insecure
|
push: force, rev, bookmark, branch, new-branch, ssh, remotecmd, insecure
|
||||||
remove: after, force, include, exclude
|
remove: after, force, include, exclude
|
||||||
|
@ -311,6 +311,7 @@ Testing -h/--help:
|
|||||||
outgoing show changesets not found in the destination
|
outgoing show changesets not found in the destination
|
||||||
parents show the parents of the working directory or revision
|
parents show the parents of the working directory or revision
|
||||||
paths show aliases for remote repositories
|
paths show aliases for remote repositories
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
recover roll back an interrupted transaction
|
recover roll back an interrupted transaction
|
||||||
@ -393,6 +394,7 @@ Testing -h/--help:
|
|||||||
outgoing show changesets not found in the destination
|
outgoing show changesets not found in the destination
|
||||||
parents show the parents of the working directory or revision
|
parents show the parents of the working directory or revision
|
||||||
paths show aliases for remote repositories
|
paths show aliases for remote repositories
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
recover roll back an interrupted transaction
|
recover roll back an interrupted transaction
|
||||||
|
@ -15,6 +15,7 @@ Short help:
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -36,6 +37,7 @@ Short help:
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -81,6 +83,7 @@ Short help:
|
|||||||
outgoing show changesets not found in the destination
|
outgoing show changesets not found in the destination
|
||||||
parents show the parents of the working directory or revision
|
parents show the parents of the working directory or revision
|
||||||
paths show aliases for remote repositories
|
paths show aliases for remote repositories
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
recover roll back an interrupted transaction
|
recover roll back an interrupted transaction
|
||||||
@ -157,6 +160,7 @@ Short help:
|
|||||||
outgoing show changesets not found in the destination
|
outgoing show changesets not found in the destination
|
||||||
parents show the parents of the working directory or revision
|
parents show the parents of the working directory or revision
|
||||||
paths show aliases for remote repositories
|
paths show aliases for remote repositories
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
recover roll back an interrupted transaction
|
recover roll back an interrupted transaction
|
||||||
@ -225,6 +229,8 @@ Test short command list with verbose option
|
|||||||
show revision history of entire repository or files
|
show revision history of entire repository or files
|
||||||
merge:
|
merge:
|
||||||
merge working directory with another revision
|
merge working directory with another revision
|
||||||
|
phase:
|
||||||
|
set or show the current phase name
|
||||||
pull:
|
pull:
|
||||||
pull changes from the specified source
|
pull changes from the specified source
|
||||||
push:
|
push:
|
||||||
@ -541,6 +547,7 @@ Test command without options
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -568,6 +575,7 @@ Test command without options
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
@ -643,6 +651,7 @@ Test that default list of commands omits extension commands
|
|||||||
outgoing show changesets not found in the destination
|
outgoing show changesets not found in the destination
|
||||||
parents show the parents of the working directory or revision
|
parents show the parents of the working directory or revision
|
||||||
paths show aliases for remote repositories
|
paths show aliases for remote repositories
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
recover roll back an interrupted transaction
|
recover roll back an interrupted transaction
|
||||||
|
@ -26,7 +26,7 @@ Following commit are draft too
|
|||||||
|
|
||||||
Draft commit are properly created over public one:
|
Draft commit are properly created over public one:
|
||||||
|
|
||||||
$ hg pull -q . # XXX use the dedicated phase command once available
|
$ hg phase --public .
|
||||||
$ hglog
|
$ hglog
|
||||||
1 0 B
|
1 0 B
|
||||||
0 0 A
|
0 0 A
|
||||||
@ -154,3 +154,109 @@ Test revset
|
|||||||
4 2 E
|
4 2 E
|
||||||
5 2 H
|
5 2 H
|
||||||
7 2 merge B' and E
|
7 2 merge B' and E
|
||||||
|
|
||||||
|
Test phase command
|
||||||
|
===================
|
||||||
|
|
||||||
|
initial picture
|
||||||
|
|
||||||
|
$ cat >> $HGRCPATH << EOF
|
||||||
|
> [extensions]
|
||||||
|
> hgext.graphlog=
|
||||||
|
> EOF
|
||||||
|
$ hg log -G --template "{rev} {phase} {desc}\n"
|
||||||
|
@ 7 secret merge B' and E
|
||||||
|
|\
|
||||||
|
| o 6 draft B'
|
||||||
|
| |
|
||||||
|
+---o 5 secret H
|
||||||
|
| |
|
||||||
|
o | 4 secret E
|
||||||
|
| |
|
||||||
|
o | 3 draft D
|
||||||
|
| |
|
||||||
|
o | 2 draft C
|
||||||
|
|/
|
||||||
|
o 1 public B
|
||||||
|
|
|
||||||
|
o 0 public A
|
||||||
|
|
||||||
|
|
||||||
|
display changesets phase
|
||||||
|
|
||||||
|
(mixing -r and plain rev specification)
|
||||||
|
|
||||||
|
$ hg phase 1::4 -r 7
|
||||||
|
1: public
|
||||||
|
2: draft
|
||||||
|
3: draft
|
||||||
|
4: secret
|
||||||
|
7: secret
|
||||||
|
|
||||||
|
|
||||||
|
move changeset forward
|
||||||
|
|
||||||
|
(with -r option)
|
||||||
|
|
||||||
|
$ hg phase --public -r 2
|
||||||
|
$ hg log -G --template "{rev} {phase} {desc}\n"
|
||||||
|
@ 7 secret merge B' and E
|
||||||
|
|\
|
||||||
|
| o 6 draft B'
|
||||||
|
| |
|
||||||
|
+---o 5 secret H
|
||||||
|
| |
|
||||||
|
o | 4 secret E
|
||||||
|
| |
|
||||||
|
o | 3 draft D
|
||||||
|
| |
|
||||||
|
o | 2 public C
|
||||||
|
|/
|
||||||
|
o 1 public B
|
||||||
|
|
|
||||||
|
o 0 public A
|
||||||
|
|
||||||
|
|
||||||
|
move changeset backward
|
||||||
|
|
||||||
|
(without -r option)
|
||||||
|
|
||||||
|
$ hg phase --draft --force 2
|
||||||
|
$ hg log -G --template "{rev} {phase} {desc}\n"
|
||||||
|
@ 7 secret merge B' and E
|
||||||
|
|\
|
||||||
|
| o 6 draft B'
|
||||||
|
| |
|
||||||
|
+---o 5 secret H
|
||||||
|
| |
|
||||||
|
o | 4 secret E
|
||||||
|
| |
|
||||||
|
o | 3 draft D
|
||||||
|
| |
|
||||||
|
o | 2 draft C
|
||||||
|
|/
|
||||||
|
o 1 public B
|
||||||
|
|
|
||||||
|
o 0 public A
|
||||||
|
|
||||||
|
|
||||||
|
move changeset forward and backward
|
||||||
|
|
||||||
|
$ hg phase --draft --force 1::4
|
||||||
|
$ hg log -G --template "{rev} {phase} {desc}\n"
|
||||||
|
@ 7 secret merge B' and E
|
||||||
|
|\
|
||||||
|
| o 6 draft B'
|
||||||
|
| |
|
||||||
|
+---o 5 secret H
|
||||||
|
| |
|
||||||
|
o | 4 draft E
|
||||||
|
| |
|
||||||
|
o | 3 draft D
|
||||||
|
| |
|
||||||
|
o | 2 draft C
|
||||||
|
|/
|
||||||
|
o 1 draft B
|
||||||
|
|
|
||||||
|
o 0 public A
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
init create a new repository in the given directory
|
init create a new repository in the given directory
|
||||||
log show revision history of entire repository or files
|
log show revision history of entire repository or files
|
||||||
merge merge working directory with another revision
|
merge merge working directory with another revision
|
||||||
|
phase set or show the current phase name
|
||||||
pull pull changes from the specified source
|
pull pull changes from the specified source
|
||||||
push push changes to the specified destination
|
push push changes to the specified destination
|
||||||
remove remove the specified files on the next commit
|
remove remove the specified files on the next commit
|
||||||
|
Loading…
Reference in New Issue
Block a user