=== modified file 'bzrlib/dirstate.py' --- bzrlib/dirstate.py 2012-01-24 01:35:56 +0000 +++ bzrlib/dirstate.py 2012-12-19 19:46:18 +0000 @@ -4030,7 +4030,7 @@ self._gather_result_for_consistency(result) if changed or self.include_unchanged: yield result - elif (current_entry[0][1] != current_path_info[1] + elif (not osutils.is_same_path(current_entry[0][1], current_path_info[1]) or current_entry[1][self.target_index][0] in 'ar'): # The current path on disk doesn't match the dirblock # record. Either the dirblock is marked as absent, or === modified file 'bzrlib/osutils.py' --- bzrlib/osutils.py 2012-09-19 07:58:27 +0000 +++ bzrlib/osutils.py 2012-12-19 19:44:34 +0000 @@ -676,6 +676,18 @@ return True return False +def is_same_path(p1, p2): + """True if p1 and p2 point to the same path on the file system + + For case-insensitive filesystems, the paths are compared + without case sensitivity. + + """ + # TODO? Perhaps we should also call normpath... + if sys.platform in ('win32', 'darwin'): + return p1.lower() == p2.lower() + else: + return p1 == p2 def pumpfile(from_file, to_file, read_length=-1, buff_size=32768, report_activity=None, direction='read'):