sapling/tests/stableidentifiers.py
Mark Thomas fc9106e076 dirstate: add checkoutidentifier to identify and correlate checkouts
Summary:
When the user checks out a new commit (either by updating to it, by
creating a new commit, or by amending or rebasing the current commit), create a
unique identifier for that checkout.

Log this identifier at the start and end of command processing, and allow other
tools to also query and log the identifier.

This allows both Mercurial commands and other commands that log the identifier
to be correlated with a particular checkout.

Reviewed By: quark-zju

Differential Revision: D14648523

fbshipit-source-id: 2fad79c3010f5fad1a0e180e3d3d6d9c0a7f8e85
2019-04-04 11:29:49 -07:00

23 lines
743 B
Python

# An extension to make identifiers from util.makerandomidentifier into a stable
# incrementing sequence.
import os
from edenscm.hgext import extutil
from edenscm.mercurial import extensions, util
def makestableidentifier(orig, length=16):
stableidentifierfile = os.path.join(os.environ["TESTTMP"], "stableidentifier")
with extutil.flock(stableidentifierfile, "stableidentifier"):
try:
coid = int(open(stableidentifierfile).read().strip())
except Exception:
coid = 0
with open(stableidentifierfile, "w") as f:
f.write("%s\n" % (coid + 1))
return "%0*d" % (length, coid)
def uisetup(ui):
extensions.wrapfunction(util, "makerandomidentifier", makestableidentifier)