Mercurial > hg
view tests/test-oldcgi.t @ 17658:a02c1ffddae9 stable
largefiles: handle commit -A properly, after a --large commit (issue3542)
Previous to this, 'commit -A' would add as normal files, files that were already
committed as largefiles, resulting in files being listed twice by 'status -A'.
It also missed when (only) a largefile was deleted, even though status reported
it as '!'. This also has the side effect of properly reporting the state of the
affected largefiles in the post commit hook after a remove that also affected a
normal file (the largefiles used to be 'R', now are properly absent).
Since scmutil.addremove() is called both by the ui command (after some trivial
argument validation) and during the commit process when -A is specified, it
seems like a more appropriate method to wrap than the addremove command.
Currently, a repo is only enabled to use largefiles after an add that explicitly
identifies some file as large, and a subsequent commit. Therefore, this patch
only changes behavior after such a largefile enabling commit.
Note that in the test, if the final commit had a '-v', 'removing large8' would
be printed twice. Both of these originate in removelargefiles(). The first
print is in verbose mode after traversing remove + forget, the second is because
the '_isaddremove' attr is set and 'after' is not.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 30 Jul 2012 20:56:41 -0400 |
parents | 8b84d040d9f9 |
children | 7a9cbb315d84 |
line wrap: on
line source
$ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths This tests if CGI files from before d0db3462d568 still work. $ hg init test $ cat >hgweb.cgi <<HGWEB > #!/usr/bin/env python > # > # An example CGI script to use hgweb, edit as necessary > > import cgitb, os, sys > cgitb.enable() > > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install > from mercurial import hgweb > > h = hgweb.hgweb("test", "Empty test repository") > h.run() > HGWEB $ chmod 755 hgweb.cgi $ cat >hgweb.config <<HGWEBDIRCONF > [paths] > test = test > HGWEBDIRCONF $ cat >hgwebdir.cgi <<HGWEBDIR > #!/usr/bin/env python > # > # An example CGI script to export multiple hgweb repos, edit as necessary > > import cgitb, sys > cgitb.enable() > > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install > from mercurial import hgweb > > # The config file looks like this. You can have paths to individual > # repos, collections of repos in a directory tree, or both. > # > # [paths] > # virtual/path = /real/path > # virtual/path = /real/path > # > # [collections] > # /prefix/to/strip/off = /root/of/tree/full/of/repos > # > # collections example: say directory tree /foo contains repos /foo/bar, > # /foo/quux/baz. Give this config section: > # [collections] > # /foo = /foo > # Then repos will list as bar and quux/baz. > > # Alternatively you can pass a list of ('virtual/path', '/real/path') tuples > # or use a dictionary with entries like 'virtual/path': '/real/path' > > h = hgweb.hgwebdir("hgweb.config") > h.run() > HGWEBDIR $ chmod 755 hgwebdir.cgi $ . "$TESTDIR/cgienv" $ python hgweb.cgi > page1 $ python hgwebdir.cgi > page2 $ PATH_INFO="/test/" $ PATH_TRANSLATED="/var/something/test.cgi" $ REQUEST_URI="/test/test/" $ SCRIPT_URI="http://hg.omnifarious.org/test/test/" $ SCRIPT_URL="/test/test/" $ python hgwebdir.cgi > page3 $ grep -i error page1 page2 page3 [1]