mirror of
https://github.com/facebook/sapling.git
synced 2024-10-04 13:57:13 +03:00
commands: migrate status and branch
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 commands: migrate status and branch manifest hash: 7d893a81a81539173fc74d86152062a1a70bed13 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCnhESywK+sNU5EO8RAlBJAKCmv2gHefMOXfX/UUCy1tfV0cOqOQCfbeX8 oaT15B7GBL2lcalGrPXkzY8= =8gVe -----END PGP SIGNATURE-----
This commit is contained in:
parent
ffc0d3cdc2
commit
f1f83067d7
27
hg
27
hg
@ -119,21 +119,11 @@ except:
|
||||
ui = ui.ui(options["verbose"], options["debug"], options["quiet"],
|
||||
not options["noninteractive"])
|
||||
|
||||
if cmd == "init":
|
||||
repo = hg.repository(ui, ".", create=1)
|
||||
try:
|
||||
repo = hg.repository(ui=ui)
|
||||
except IOError:
|
||||
ui.warn("Unable to open repository\n")
|
||||
sys.exit(0)
|
||||
elif cmd == "branch" or cmd == "clone":
|
||||
os.system("cp -al %s/.hg .hg" % args[0])
|
||||
sys.exit(0)
|
||||
elif cmd == "help":
|
||||
help()
|
||||
sys.exit(0)
|
||||
else:
|
||||
try:
|
||||
repo = hg.repository(ui=ui)
|
||||
except IOError:
|
||||
ui.warn("Unable to open repository\n")
|
||||
sys.exit(0)
|
||||
|
||||
relpath = None
|
||||
if os.getcwd() != repo.root:
|
||||
@ -221,15 +211,6 @@ elif cmd == "import" or cmd == "patch":
|
||||
raise "patch failed!"
|
||||
repo.commit(repo.current, files, text)
|
||||
|
||||
elif cmd == "status":
|
||||
(c, a, d) = repo.diffdir(repo.root, repo.current)
|
||||
if relpath:
|
||||
(c, a, d) = map(lambda x: filterfiles(x, [ relpath ]), (c, a, d))
|
||||
|
||||
for f in c: print "C", f
|
||||
for f in a: print "?", f
|
||||
for f in d: print "R", f
|
||||
|
||||
elif cmd == "diff":
|
||||
revs = []
|
||||
|
||||
|
@ -3,6 +3,20 @@ from mercurial import fancyopts, ui, hg
|
||||
|
||||
class UnknownCommand(Exception): pass
|
||||
|
||||
def filterfiles(list, files):
|
||||
l = [ x for x in list if x in files ]
|
||||
|
||||
for f in files:
|
||||
if f[-1] != os.sep: f += os.sep
|
||||
l += [ x for x in list if x.startswith(f) ]
|
||||
return l
|
||||
|
||||
def relfilter(repo, args):
|
||||
if os.getcwd() != repo.root:
|
||||
p = os.getcwd()[len(repo.root) + 1: ]
|
||||
return filterfiles(p, args)
|
||||
return args
|
||||
|
||||
def relpath(repo, args):
|
||||
if os.getcwd() != repo.root:
|
||||
p = os.getcwd()[len(repo.root) + 1: ]
|
||||
@ -49,6 +63,11 @@ def init(ui):
|
||||
"""create a repository"""
|
||||
hg.repository(ui, ".", create=1)
|
||||
|
||||
def branch(ui, path):
|
||||
'''branch from a local repository'''
|
||||
# this should eventually support remote repos
|
||||
os.system("cp -al %s/.hg .hg" % path)
|
||||
|
||||
def checkout(u, repo, changeset=None):
|
||||
'''checkout a given changeset or the current tip'''
|
||||
node = repo.changelog.tip()
|
||||
@ -98,11 +117,26 @@ def annotate(u, repo, *args, **ops):
|
||||
for p,l in zip(zip(*pieces), lines):
|
||||
u.write(" ".join(p) + ": " + l[1])
|
||||
|
||||
def status(ui, repo):
|
||||
'''show changed files in the working directory
|
||||
|
||||
C = changed
|
||||
A = added
|
||||
R = removed
|
||||
? = not tracked'''
|
||||
(c, a, d) = repo.diffdir(repo.root, repo.current)
|
||||
(c, a, d) = map(lambda x: relfilter(repo, x), (c, a, d))
|
||||
|
||||
for f in c: print "C", f
|
||||
for f in a: print "?", f
|
||||
for f in d: print "R", f
|
||||
|
||||
def undo(ui, repo):
|
||||
repo.undo()
|
||||
|
||||
table = {
|
||||
"init": (init, [], 'hg init'),
|
||||
"branch|clone": (branch, [], 'hg branch [path]'),
|
||||
"help": (help, [], 'hg help [command]'),
|
||||
"checkout|co": (checkout, [], 'hg checkout [changeset]'),
|
||||
"ann|annotate": (annotate,
|
||||
@ -111,6 +145,7 @@ table = {
|
||||
('n', 'number', None, 'show revision number'),
|
||||
('c', 'changeset', None, 'show changeset')],
|
||||
'hg annotate [-u] [-c] [-n] [-r id] [files]'),
|
||||
"status": (status, [], 'hg status'),
|
||||
"undo": (undo, [], 'hg undo'),
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user