comparison mercurial/subrepo.py @ 15534:80ec63090a7a

merge with stable
author Matt Mackall <mpm@selenic.com>
date Sun, 20 Nov 2011 16:06:18 -0600
parents 646759147717 0810ccc51f0a
children 260a6449d83a
comparison
equal deleted inserted replaced
15530:eeac5e179243 15534:80ec63090a7a
821 return base == r1 821 return base == r1
822 822
823 def _gitisbare(self): 823 def _gitisbare(self):
824 return self._gitcommand(['config', '--bool', 'core.bare']) == 'true' 824 return self._gitcommand(['config', '--bool', 'core.bare']) == 'true'
825 825
826 def _gitupdatestat(self):
827 """This must be run before git diff-index.
828 diff-index only looks at changes to file stat;
829 this command looks at file contents and updates the stat."""
830 self._gitcommand(['update-index', '-q', '--refresh'])
831
826 def _gitbranchmap(self): 832 def _gitbranchmap(self):
827 '''returns 2 things: 833 '''returns 2 things:
828 a map from git branch to revision 834 a map from git branch to revision
829 a map from revision to branches''' 835 a map from revision to branches'''
830 branch2rev = {} 836 branch2rev = {}
890 return True 896 return True
891 if not ignoreupdate and self._state[1] != self._gitstate(): 897 if not ignoreupdate and self._state[1] != self._gitstate():
892 # different version checked out 898 # different version checked out
893 return True 899 return True
894 # check for staged changes or modified files; ignore untracked files 900 # check for staged changes or modified files; ignore untracked files
901 self._gitupdatestat()
895 out, code = self._gitdir(['diff-index', '--quiet', 'HEAD']) 902 out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
896 return code == 1 903 return code == 1
897 904
898 def get(self, state, overwrite=False): 905 def get(self, state, overwrite=False):
899 source, revision, kind = state 906 source, revision, kind = state
997 1004
998 def merge(self, state): 1005 def merge(self, state):
999 source, revision, kind = state 1006 source, revision, kind = state
1000 self._fetch(source, revision) 1007 self._fetch(source, revision)
1001 base = self._gitcommand(['merge-base', revision, self._state[1]]) 1008 base = self._gitcommand(['merge-base', revision, self._state[1]])
1009 self._gitupdatestat()
1002 out, code = self._gitdir(['diff-index', '--quiet', 'HEAD']) 1010 out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
1003 1011
1004 def mergefunc(): 1012 def mergefunc():
1005 if base == revision: 1013 if base == revision:
1006 self.get(state) # fast forward merge 1014 self.get(state) # fast forward merge
1104 rev1 = self._state[1] 1112 rev1 = self._state[1]
1105 if self._gitmissing() or not rev1: 1113 if self._gitmissing() or not rev1:
1106 # if the repo is missing, return no results 1114 # if the repo is missing, return no results
1107 return [], [], [], [], [], [], [] 1115 return [], [], [], [], [], [], []
1108 modified, added, removed = [], [], [] 1116 modified, added, removed = [], [], []
1117 self._gitupdatestat()
1109 if rev2: 1118 if rev2:
1110 command = ['diff-tree', rev1, rev2] 1119 command = ['diff-tree', rev1, rev2]
1111 else: 1120 else:
1112 command = ['diff-index', rev1] 1121 command = ['diff-index', rev1]
1113 out = self._gitcommand(command) 1122 out = self._gitcommand(command)