comparison mercurial/subrepo.py @ 13095:49c7e875482d

subrepo: use environment variable instead of git commit's --date Older git versions do not have a --date flag.
author Eric Eisner <ede@mit.edu>
date Mon, 06 Dec 2010 21:17:27 -0500
parents a1dd7bd26a2b
children 6e74b912fa5c
comparison
equal deleted inserted replaced
13094:a1dd7bd26a2b 13095:49c7e875482d
611 self._ctx = ctx 611 self._ctx = ctx
612 self._relpath = path 612 self._relpath = path
613 self._path = ctx._repo.wjoin(path) 613 self._path = ctx._repo.wjoin(path)
614 self._ui = ctx._repo.ui 614 self._ui = ctx._repo.ui
615 615
616 def _gitcommand(self, commands, stream=False): 616 def _gitcommand(self, commands, env=None, stream=False):
617 return self._gitdir(commands, stream=stream)[0] 617 return self._gitdir(commands, env=env, stream=stream)[0]
618 618
619 def _gitdir(self, commands, stream=False): 619 def _gitdir(self, commands, env=None, stream=False):
620 commands = ['--no-pager'] + commands 620 commands = ['--no-pager'] + commands
621 return self._gitnodir(commands, stream=stream, cwd=self._path) 621 return self._gitnodir(commands, env=env, stream=stream, cwd=self._path)
622 622
623 def _gitnodir(self, commands, stream=False, cwd=None): 623 def _gitnodir(self, commands, env=None, stream=False, cwd=None):
624 """Calls the git command 624 """Calls the git command
625 625
626 The methods tries to call the git command. versions previor to 1.6.0 626 The methods tries to call the git command. versions previor to 1.6.0
627 are not supported and very probably fail. 627 are not supported and very probably fail.
628 """ 628 """
629 cmd = ['git'] + commands 629 cmd = ['git'] + commands
630 cmd = [util.shellquote(arg) for arg in cmd] 630 cmd = [util.shellquote(arg) for arg in cmd]
631 cmd = util.quotecommand(' '.join(cmd)) 631 cmd = util.quotecommand(' '.join(cmd))
632 632
633 # print git's stderr, which is mostly progress and useful info 633 # print git's stderr, which is mostly progress and useful info
634 p = subprocess.Popen(cmd, shell=True, bufsize=-1, cwd=cwd, 634 p = subprocess.Popen(cmd, shell=True, bufsize=-1, cwd=cwd, env=env,
635 close_fds=util.closefds, 635 close_fds=util.closefds,
636 stdout=subprocess.PIPE) 636 stdout=subprocess.PIPE)
637 if stream: 637 if stream:
638 return p.stdout, None 638 return p.stdout, None
639 639
787 # a real merge would be required, just checkout the revision 787 # a real merge would be required, just checkout the revision
788 rawcheckout() 788 rawcheckout()
789 789
790 def commit(self, text, user, date): 790 def commit(self, text, user, date):
791 cmd = ['commit', '-a', '-m', text] 791 cmd = ['commit', '-a', '-m', text]
792 env = os.environ.copy()
792 if user: 793 if user:
793 cmd += ['--author', user] 794 cmd += ['--author', user]
794 if date: 795 if date:
795 # git's date parser silently ignores when seconds < 1e9 796 # git's date parser silently ignores when seconds < 1e9
796 # convert to ISO8601 797 # convert to ISO8601
797 cmd += ['--date', util.datestr(date, '%Y-%m-%dT%H:%M:%S %1%2')] 798 env['GIT_AUTHOR_DATE'] = util.datestr(date,
798 self._gitcommand(cmd) 799 '%Y-%m-%dT%H:%M:%S %1%2')
800 self._gitcommand(cmd, env=env)
799 # make sure commit works otherwise HEAD might not exist under certain 801 # make sure commit works otherwise HEAD might not exist under certain
800 # circumstances 802 # circumstances
801 return self._gitstate() 803 return self._gitstate()
802 804
803 def merge(self, state): 805 def merge(self, state):