Mercurial > hg
view tests/test-dispatch.py @ 29181:dae38633eba8 stable
localrepo: prevent executable-bit only changes from being lost on amend
If you have just executable-bit change and amend it twice it will vanish:
* After the first amend the commit will have the proper executable bit set
in manifest but it won't have the the file on the list of files in
changelog.
* The second amend will read the wrong list of files from changelog and it
will copy the manifest entry from parent for this file.
* Voila! The change is lost.
This change repairs the bug in localrepo causing this and adds a test for it.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Thu, 19 May 2016 14:35:22 -0700 |
parents | 1d9d29d4813a |
children | f0c94af0d70d |
line wrap: on
line source
from __future__ import absolute_import, print_function import os from mercurial import ( dispatch, ) def testdispatch(cmd): """Simple wrapper around dispatch.dispatch() Prints command and result value, but does not handle quoting. """ print("running: %s" % (cmd,)) req = dispatch.request(cmd.split()) result = dispatch.dispatch(req) print("result: %r" % (result,)) testdispatch("init test1") os.chdir('test1') # create file 'foo', add and commit f = open('foo', 'wb') f.write('foo\n') f.close() testdispatch("add foo") testdispatch("commit -m commit1 -d 2000-01-01 foo") # append to file 'foo' and commit f = open('foo', 'ab') f.write('bar\n') f.close() testdispatch("commit -m commit2 -d 2000-01-02 foo") # check 88803a69b24 (fancyopts modified command table) testdispatch("log -r 0") testdispatch("log -r tip")