Mercurial > hg
annotate contrib/python-hook-examples.py @ 39318:c03c5f528e9b
perf: use storage API for resolving manifest node
lookup() isn't part of the storage API. And this code shouldn't
be accessing manifestlog._revlog directly for the modern code base.
So let's port it to the modern API.
Note that the previous code was busted for cases where we needed
to call lookup() because lookup() isn't exposed by manifestrevlog
any more.
This change is strictly BC breaking because we no longer support
resolving partial nodes. But it is a perf* command and I don't
think we should flag the change as such.
Differential Revision: https://phab.mercurial-scm.org/D4390
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 15 Aug 2018 19:45:39 +0000 |
parents | 2b585677220e |
children | 1a184b727aff |
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 __future__ import absolute_import |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
5 from mercurial import ( |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
6 patch, |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
7 util, |
2b585677220e
contrib: python-hook-examples use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
13878
diff
changeset
|
8 ) |
7917
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
9 |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
10 def diffstat(ui, repo, **kwargs): |
7918
62f11ef0df5b
Change wording in example hook
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7917
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 |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
16 ''' |
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: |
5a5396f49420
diffstat hook example
Alexander Solovyov <piranha@piranha.org.ua>
parents:
diff
changeset
|
22 last = repo['tip'].node() |
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))) |