mercurial/subrepo.py
branchstable
changeset 15531 0810ccc51f0a
parent 15498 ac5a340b26de
child 15534 80ec63090a7a
child 15723 1581da01d5c4
equal deleted inserted replaced
15512:8b011ededfb2 15531:0810ccc51f0a
   805         return base == r1
   805         return base == r1
   806 
   806 
   807     def _gitisbare(self):
   807     def _gitisbare(self):
   808         return self._gitcommand(['config', '--bool', 'core.bare']) == 'true'
   808         return self._gitcommand(['config', '--bool', 'core.bare']) == 'true'
   809 
   809 
       
   810     def _gitupdatestat(self):
       
   811         """This must be run before git diff-index.
       
   812         diff-index only looks at changes to file stat;
       
   813         this command looks at file contents and updates the stat."""
       
   814         self._gitcommand(['update-index', '-q', '--refresh'])
       
   815 
   810     def _gitbranchmap(self):
   816     def _gitbranchmap(self):
   811         '''returns 2 things:
   817         '''returns 2 things:
   812         a map from git branch to revision
   818         a map from git branch to revision
   813         a map from revision to branches'''
   819         a map from revision to branches'''
   814         branch2rev = {}
   820         branch2rev = {}
   874             return True
   880             return True
   875         if not ignoreupdate and self._state[1] != self._gitstate():
   881         if not ignoreupdate and self._state[1] != self._gitstate():
   876             # different version checked out
   882             # different version checked out
   877             return True
   883             return True
   878         # check for staged changes or modified files; ignore untracked files
   884         # check for staged changes or modified files; ignore untracked files
       
   885         self._gitupdatestat()
   879         out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
   886         out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
   880         return code == 1
   887         return code == 1
   881 
   888 
   882     def get(self, state, overwrite=False):
   889     def get(self, state, overwrite=False):
   883         source, revision, kind = state
   890         source, revision, kind = state
   981 
   988 
   982     def merge(self, state):
   989     def merge(self, state):
   983         source, revision, kind = state
   990         source, revision, kind = state
   984         self._fetch(source, revision)
   991         self._fetch(source, revision)
   985         base = self._gitcommand(['merge-base', revision, self._state[1]])
   992         base = self._gitcommand(['merge-base', revision, self._state[1]])
       
   993         self._gitupdatestat()
   986         out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
   994         out, code = self._gitdir(['diff-index', '--quiet', 'HEAD'])
   987 
   995 
   988         def mergefunc():
   996         def mergefunc():
   989             if base == revision:
   997             if base == revision:
   990                 self.get(state) # fast forward merge
   998                 self.get(state) # fast forward merge
  1088         rev1 = self._state[1]
  1096         rev1 = self._state[1]
  1089         if self._gitmissing() or not rev1:
  1097         if self._gitmissing() or not rev1:
  1090             # if the repo is missing, return no results
  1098             # if the repo is missing, return no results
  1091             return [], [], [], [], [], [], []
  1099             return [], [], [], [], [], [], []
  1092         modified, added, removed = [], [], []
  1100         modified, added, removed = [], [], []
       
  1101         self._gitupdatestat()
  1093         if rev2:
  1102         if rev2:
  1094             command = ['diff-tree', rev1, rev2]
  1103             command = ['diff-tree', rev1, rev2]
  1095         else:
  1104         else:
  1096             command = ['diff-index', rev1]
  1105             command = ['diff-index', rev1]
  1097         out = self._gitcommand(command)
  1106         out = self._gitcommand(command)