addremove: add support for the -S flag
Git and svn subrepos are currently not supported. It doesn't look like git or
svn have these commands natively, so that's an area for a git or svn expert.
--- a/mercurial/commands.py Mon Nov 24 22:27:49 2014 -0500
+++ b/mercurial/commands.py Mon Nov 24 23:51:26 2014 -0500
@@ -204,7 +204,7 @@
return rejected and 1 or 0
@command('addremove',
- similarityopts + walkopts + dryrunopts,
+ similarityopts + subrepoopts + walkopts + dryrunopts,
_('[OPTION]... [FILE]...'),
inferrepo=True)
def addremove(ui, repo, *pats, **opts):
--- a/mercurial/help/subrepos.txt Mon Nov 24 22:27:49 2014 -0500
+++ b/mercurial/help/subrepos.txt Mon Nov 24 23:51:26 2014 -0500
@@ -81,6 +81,10 @@
Git and Subversion subrepositories are currently silently
ignored.
+:addremove: addremove does not recurse into subrepos unless
+ -S/--subrepos is specified. Git and Subversion subrepositories
+ will print a warning and continue.
+
:archive: archive does not recurse in subrepositories unless
-S/--subrepos is specified.
--- a/tests/test-completion.t Mon Nov 24 22:27:49 2014 -0500
+++ b/tests/test-completion.t Mon Nov 24 23:51:26 2014 -0500
@@ -215,7 +215,7 @@
status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, change, include, exclude, subrepos, template
summary: remote
update: clean, check, date, rev, tool
- addremove: similarity, include, exclude, dry-run
+ addremove: similarity, subrepos, include, exclude, dry-run
archive: no-decode, prefix, rev, type, subrepos, include, exclude
backout: merge, parent, rev, edit, tool, include, exclude, message, logfile, date, user
bisect: reset, good, bad, skip, extend, command, noupdate
--- a/tests/test-subrepo-deep-nested-change.t Mon Nov 24 22:27:49 2014 -0500
+++ b/tests/test-subrepo-deep-nested-change.t Mon Nov 24 23:51:26 2014 -0500
@@ -128,11 +128,32 @@
R sub1/.hgsubstate
R sub1/sub2/folder/test.txt
$ hg update -Cq
+ $ touch sub1/foo
+ $ hg forget sub1/sub2/folder/test.txt
+ $ rm sub1/sub2/test.txt
+
+Test relative path printing + subrepos
+ $ mkdir -p foo/bar
+ $ cd foo
+ $ touch bar/abc
+ $ hg addremove -S ..
+ adding ../sub1/sub2/folder/test.txt (glob)
+ removing ../sub1/sub2/test.txt (glob)
+ adding ../sub1/foo (glob)
+ adding bar/abc (glob)
+ $ cd ..
+ $ hg status -S
+ A foo/bar/abc
+ A sub1/foo
+ R sub1/sub2/test.txt
+ $ hg update -Cq
$ rm sub1/sub2/folder/test.txt
$ rm sub1/sub2/test.txt
$ hg ci -ASm "remove test.txt"
removing sub1/sub2/folder/test.txt (glob)
removing sub1/sub2/test.txt (glob)
+ adding sub1/foo (glob)
+ adding foo/bar/abc
committing subrepository sub1
committing subrepository sub1/sub2 (glob)
$ hg rollback -q