# HG changeset patch # User Paul Crowley # Date 1292618716 0 # Node ID 2e781d52f76e0fdab29ea75787caaf50291472cc # Parent ec60311ce2a6d0058cfb98f88697daa56818e300 Subrepo support diff -r ec60311ce2a6 -r 2e781d52f76e NEWS --- a/NEWS Fri Dec 17 18:54:38 2010 +0000 +++ b/NEWS Fri Dec 17 20:45:16 2010 +0000 @@ -2,6 +2,7 @@ mercurial-server 1.1 ====================== +* Allow subrepo creation * New log filename * Changed logging format to use JSON/YAML * Add the source IP address and other info in the SSH_CONNECTION environment variable diff -r ec60311ce2a6 -r 2e781d52f76e dev/chroot-test/action/test1 --- a/dev/chroot-test/action/test1 Fri Dec 17 18:54:38 2010 +0000 +++ b/dev/chroot-test/action/test1 Fri Dec 17 20:45:16 2010 +0000 @@ -28,14 +28,19 @@ echo "Push" hg push cd .. -mkdir realrepo +hg init realrepo cd realrepo -hg init . mkdir denied echo "This is a file" > content echo "This is a file not everyone can write to" > denied/cantwrite -hg add content denied/cantwrite +hg init nested +echo "This is a file in a nested repo" > nested/content +hg add -R nested nested/content +hg commit -u test1 -R nested -m "Add files to the subrepo" +echo "nested = nested" > .hgsub +hg add content denied/cantwrite .hgsub hg commit -u test1 -m "Add files to the repo" echo "Pushing changes" hg clone . ssh://chroothg/real/project +hg clone nested ssh://chroothg/real/project/nested echo "Done for user test1" diff -r ec60311ce2a6 -r 2e781d52f76e dev/chroot-test/action/test2 --- a/dev/chroot-test/action/test2 Fri Dec 17 18:54:38 2010 +0000 +++ b/dev/chroot-test/action/test2 Fri Dec 17 20:45:16 2010 +0000 @@ -14,6 +14,7 @@ echo "Pulling real project" hg clone ssh://chroothg/real/project cd project +[ -e nested/content ] echo "and I'm adding something" >> content hg commit -u test2 -m "Added something to the file" echo "This push should succeed" diff -r ec60311ce2a6 -r 2e781d52f76e src/hg-ssh --- a/src/hg-ssh Fri Dec 17 18:54:38 2010 +0000 +++ b/src/hg-ssh Fri Dec 17 20:45:16 2010 +0000 @@ -34,17 +34,8 @@ if head: checkDots(head) -def checkParents(path): - path = os.path.dirname(path) - if path == "": - return - if os.path.exists(path + "/.hg"): - fail("Cannot create repo under existing repo") - checkParents(path) - def getrepo(op, repo): # First canonicalise, then check the string, then the rules - # and finally the filesystem. repo = repo.strip().rstrip("/") if len(repo) == 0: fail("path to repository seems to be empty") @@ -54,7 +45,6 @@ ruleset.rules.set(repo=repo) if not ruleset.rules.allow(op, branch=None, file=None): fail("access denied") - checkParents(repo) return repo config.initExe()