diff --git a/infinitepush/__init__.py b/infinitepush/__init__.py --- a/infinitepush/__init__.py +++ b/infinitepush/__init__.py @@ -145,6 +145,7 @@ cmdtable = infinitepushcommands.cmdtable revsetpredicate = backupcommands.revsetpredicate +templatekeyword = backupcommands.templatekeyword _scratchbranchmatcher = lambda x: False _maybehash = re.compile(r'^[a-f0-9]+$').search diff --git a/infinitepush/backupcommands.py b/infinitepush/backupcommands.py --- a/infinitepush/backupcommands.py +++ b/infinitepush/backupcommands.py @@ -84,6 +84,7 @@ cmdtable = {} command = registrar.command(cmdtable) revsetpredicate = registrar.revsetpredicate() +templatekeyword = registrar.templatekeyword() backupbookmarktuple = namedtuple('backupbookmarktuple', ['hostname', 'reporoot', 'localbookmark']) @@ -337,6 +338,13 @@ candidates.update([p.hex() for p in ctx.parents()]) return subset & notbackeduprevs +@templatekeyword('backingup') +def backingup(repo, ctx, **args): + """Whether infinitepush is currently backing up commits.""" + # If the backup lock exists then a backup should be in progress. + srcrepo = shareutil.getsrcrepo(repo) + return srcrepo.vfs.lexists(_backuplockname) + def smartlogsummary(ui, repo): if not ui.configbool('infinitepushbackup', 'enablestatus'): return diff --git a/tests/test-infinitepush-backup-status.t b/tests/test-infinitepush-backup-status.t --- a/tests/test-infinitepush-backup-status.t +++ b/tests/test-infinitepush-backup-status.t @@ -180,3 +180,12 @@ 5 Backup pending changeset 6 Not backed up changeset 2 7 Not backed up changeset 3 + +Test template keyword for when a backup is in progress + $ hg log -T '{if(backingup,"Yes","No")}\n' -r . + No + $ echo fakelock > .hg/infinitepushbackup.lock + $ hg log -T '{if(backingup,"Yes","No")}\n' -r . + Yes + $ rm -f .hg/infinitepushbackup.lock +