[PATCH 1 of 2] record: use absolute path instead of os.chdir

pierre-yves.david at ens-lyon.org pierre-yves.david at ens-lyon.org
Fri Jan 31 17:23:25 CST 2014

# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1391208773 28800
#      Fri Jan 31 14:52:53 2014 -0800
# Branch stable
# Node ID 33b269ec18fc46efd5616ce6ba98e189d7cd8923
# Parent  a959f71670771a9dae97e73ec86da222950233a4
record: use absolute path instead of os.chdir

Record was changing the current directory to `repo.root` in order to be able to
feed `command.commit` file name relative to this `repo.root`. This is a bit
overkill and prevent an incoming fix to rebase. This would also break
multi-threaded usage.

Instead we just feed `command.commit` with absolute path name. works as well as
before but without chdir.

diff --git a/hgext/record.py b/hgext/record.py
--- a/hgext/record.py
+++ b/hgext/record.py
@@ -599,16 +599,12 @@ def dorecord(ui, repo, commitfunc, cmdsu
             #    commit/qrefresh or the like!
             # it is important to first chdir to repo root -- we'll call
             # a highlevel command with list of pathnames relative to
             # repo root
-            cwd = os.getcwd()
-            os.chdir(repo.root)
-            try:
-                commitfunc(ui, repo, *newfiles, **opts)
-            finally:
-                os.chdir(cwd)
+            newfiles = [repo.wjoin(nf) for nf in newfiles]
+            commitfunc(ui, repo, *newfiles, **opts)
             return 0
             # 5. finally restore backed-up files

More information about the Mercurial-devel mailing list