On 2009-01-30 14:01:20 +0000, Catalin Marinas wrote: > @@ -706,9 +706,15 @@ class Index(RunWithEnv): > ).output_one_line()) > except run.RunException: > raise MergeException('Conflicting merge') > - def is_clean(self): > + def is_clean(self, tree = None): > + """Check whether the index is clean relative to the given tree.""" > + if tree: > + sha1 = tree.sha1 > + else: > + sha1 = 'HEAD' > try: > - self.run(['git', 'update-index', '--refresh']).discard_output() > + self.run(['git', 'diff-index', '--quiet', '--cached', sha1] > + ).discard_output() > except run.RunException: > return False > else: OK (though I personally would have allowed only Tree objects, with no defaulting to the current HEAD). The docstring should say s/tree/treeish/. > @@ -858,6 +864,15 @@ class IndexAndWorktree(RunWithEnvCwd): > cmd = ['git', 'update-index', '--remove'] > self.run(cmd + ['-z', '--stdin'] > ).input_nulterm(paths).discard_output() > + def worktree_clean(self): > + """Check whether the worktree is clean relative and no updates or > + merges are needed.""" > + try: > + self.run(['git', 'update-index', '--refresh']).discard_output() > + except run.RunException: > + return False > + else: > + return True Clean relative to the index. And what do merges have to do with it? > + # Check for not clean index and worktree > + if check_clean and iw: > + if not iw.worktree_clean(): > + self.__halt('Repository not clean. Use "refresh" or ' > + '"status --reset"') > + elif not iw.index.is_clean()): > + self.__halt('Index and HEAD different. Use "repair" to ' > + 'recover additional commits') The first message is good, but the second one is misleading -- you'd be much better off just reusing the same message as for the first case. (You could recommend refresh --index if you want to get fancy.) -- Karl Hasselström, kha@xxxxxxxxxxx www.treskal.com/kalle -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html