Sorry, I haven't had time to look into the bug or your proposed fix, and
I'm going away for 2 weeks. Hopefully others can take a look at it soon.
Just wanted to let you know that this wasn't lost to the abyss.
Raphaël
On 9/26/21 10:31 PM, alexrayne wrote:
# HG changeset patch
# User alexrayne <alexraynepe...@gmail.com>
# Date 1632687562 -10800
# Sun Sep 26 23:19:22 2021 +0300
# Branch stable
# Node ID f626e7866c6ccee998543847f7ed3b0f63a3c504
# Parent bf4231a64fb22e0268aea344f03fbab1708ca3a5
issue6588 fix: filelog can store rev-dups - revs with same content on same
parents, but on different changeID.
* to solve problem with rev-dups, this patch infers changes into revision
meta-data - current timestamp.
diff --git a/mercurial/filelog.py b/mercurial/filelog.py
--- a/mercurial/filelog.py
+++ b/mercurial/filelog.py
@@ -18,6 +18,7 @@
util as interfaceutil,
)
from .utils import storageutil
+from .utils import dateutil
from .revlogutils import (
constants as revlog_constants,
rewrite,
@@ -209,8 +210,14 @@
def add(self, text, meta, transaction, link, p1=None, p2=None):
if meta or text.startswith(b'\1\n'):
- text = storageutil.packmeta(meta, text)
- rev = self.addrevision(text, transaction, link, p1, p2)
+ revdata = storageutil.packmeta(meta, text)
+ else :
+ revdata = text
+ rev = self.addrevision(revdata, transaction, link, p1, p2)
+ if self.linkrev(rev) != link:
+ meta[b"dup-date"] = dateutil.datestr()
+ revdata = storageutil.packmeta(meta, text)
+ rev = self.addrevision(revdata, transaction, link, p1, p2)
return self.node(rev)
def renamed(self, node):
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel