[PATCH 5 of 7] subrepo: use environment variable instead of git commit's --date
Eric Eisner
ede at MIT.EDU
Mon Dec 6 20:37:09 CST 2010
# HG changeset patch
# User Eric Eisner <ede at mit.edu>
# Date 1291688247 18000
# Node ID 49c7e875482dc5fb1cea6c9e2fdb3180588a972f
# Parent a1dd7bd26a2b4fce269f8ea4efdf9365e6e18e2f
subrepo: use environment variable instead of git commit's --date
Older git versions do not have a --date flag.
diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -613,14 +613,14 @@ class gitsubrepo(object):
self._path = ctx._repo.wjoin(path)
self._ui = ctx._repo.ui
- def _gitcommand(self, commands, stream=False):
- return self._gitdir(commands, stream=stream)[0]
+ def _gitcommand(self, commands, env=None, stream=False):
+ return self._gitdir(commands, env=env, stream=stream)[0]
- def _gitdir(self, commands, stream=False):
+ def _gitdir(self, commands, env=None, stream=False):
commands = ['--no-pager'] + commands
- return self._gitnodir(commands, stream=stream, cwd=self._path)
+ return self._gitnodir(commands, env=env, stream=stream, cwd=self._path)
- def _gitnodir(self, commands, stream=False, cwd=None):
+ def _gitnodir(self, commands, env=None, stream=False, cwd=None):
"""Calls the git command
The methods tries to call the git command. versions previor to 1.6.0
@@ -631,7 +631,7 @@ class gitsubrepo(object):
cmd = util.quotecommand(' '.join(cmd))
# print git's stderr, which is mostly progress and useful info
- p = subprocess.Popen(cmd, shell=True, bufsize=-1, cwd=cwd,
+ p = subprocess.Popen(cmd, shell=True, bufsize=-1, cwd=cwd, env=env,
close_fds=util.closefds,
stdout=subprocess.PIPE)
if stream:
@@ -789,13 +789,15 @@ class gitsubrepo(object):
def commit(self, text, user, date):
cmd = ['commit', '-a', '-m', text]
+ env = os.environ.copy()
if user:
cmd += ['--author', user]
if date:
# git's date parser silently ignores when seconds < 1e9
# convert to ISO8601
- cmd += ['--date', util.datestr(date, '%Y-%m-%dT%H:%M:%S %1%2')]
- self._gitcommand(cmd)
+ env['GIT_AUTHOR_DATE'] = util.datestr(date,
+ '%Y-%m-%dT%H:%M:%S %1%2')
+ self._gitcommand(cmd, env=env)
# make sure commit works otherwise HEAD might not exist under certain
# circumstances
return self._gitstate()
More information about the Mercurial-devel
mailing list