Mercurial > hg
annotate contrib/python-hook-examples.py @ 51580:b70628a9aa7e
phases: use revision number in new_heads
All graph operations will be done using revision numbers, so passing nodes only
means they will eventually get converted to revision numbers internally.
As part of an effort to align the code on using revision number we make the
`phases.newheads` function operated on revision number, taking them as input
and using them in returns, instead of the node-id it used to consume and
produce.
This is part of multiple changesets effort to translate more part of the logic,
but is done step by step to facilitate the identification of issue that might
arise in mercurial core and extensions.
To make the change simpler to handle for third party extensions, we also rename
the function, using a more modern form. This will help detecting the different
between the node-id version and the rev-num version.
I also take this as an opportunity to add some comment about possible
performance improvement for the future. They don't matter too much now, but they
are worse exploring in a while.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 05 Apr 2024 11:33:47 +0200 |
parents | 6000f5b25c9b |
children |
rev | line source |
---|---|
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
1 ''' |
7918
62f11ef0df5b
Change wording in example hook
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7917
diff
changeset
|
2 Examples of useful python hooks for Mercurial. |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
3 ''' |
28562
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
4 from mercurial import ( |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
5 patch, |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
6 util, |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
7 ) |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
8 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39895
diff
changeset
|
9 |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
10 def diffstat(ui, repo, **kwargs): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43076
diff
changeset
|
11 """Example usage: |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
12 |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
13 [hooks] |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
14 commit.diffstat = python:/path/to/this/file.py:diffstat |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
15 changegroup.diffstat = python:/path/to/this/file.py:diffstat |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43076
diff
changeset
|
16 """ |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
17 if kwargs.get('parent2'): |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
18 return |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
19 node = kwargs['node'] |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
7918
diff
changeset
|
20 first = repo[node].p1().node() |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
21 if 'url' in kwargs: |
39895
1a184b727aff
repo: don't look up context for tip node if it's not needed
Martin von Zweigbergk <martinvonz@google.com>
parents:
28562
diff
changeset
|
22 last = repo.changelog.tip() |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
23 else: |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
24 last = node |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
25 diff = patch.diff(repo, first, last) |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
26 ui.write(patch.diffstat(util.iterlines(diff))) |