# HG changeset patch # User Augie Fackler # Date 1418677468 18000 # Node ID 829f640b5540d9da98258ab54b91ca96d797e9f0 # Parent d43948a910a516e9e1be38b69d773816cb879d8a manifest: add optional recording of clean entries to diff This makes manifest slightly easier to use for status code. diff -r d43948a910a5 -r 829f640b5540 mercurial/manifest.py --- a/mercurial/manifest.py Mon Dec 15 15:33:55 2014 -0500 +++ b/mercurial/manifest.py Mon Dec 15 16:04:28 2014 -0500 @@ -58,13 +58,21 @@ del mf[fn] return mf - def diff(self, m2): - '''Finds changes between the current manifest and m2. The result is - returned as a dict with filename as key and values of the form - ((n1,fl1),(n2,fl2)), where n1/n2 is the nodeid in the current/other - manifest and fl1/fl2 is the flag in the current/other manifest. Where - the file does not exist, the nodeid will be None and the flags will be - the empty string.''' + def diff(self, m2, clean=False): + '''Finds changes between the current manifest and m2. + + Args: + m2: the manifest to which this manifest should be compared. + clean: if true, include files unchanged between these manifests + with a None value in the returned dictionary. + + The result is returned as a dict with filename as key and + values of the form ((n1,fl1),(n2,fl2)), where n1/n2 is the + nodeid in the current/other manifest and fl1/fl2 is the flag + in the current/other manifest. Where the file does not exist, + the nodeid will be None and the flags will be the empty + string. + ''' diff = {} for fn, n1 in self.iteritems(): @@ -75,6 +83,8 @@ fl2 = '' if n1 != n2 or fl1 != fl2: diff[fn] = ((n1, fl1), (n2, fl2)) + elif clean: + diff[fn] = None for fn, n2 in m2.iteritems(): if fn not in self: