summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/python-support.md15
-rw-r--r--docs/repo-hooks.md25
2 files changed, 40 insertions, 0 deletions
diff --git a/docs/python-support.md b/docs/python-support.md
index af19cd05..35806de7 100644
--- a/docs/python-support.md
+++ b/docs/python-support.md
@@ -28,5 +28,20 @@ The master branch will require Python 3.6 at a minimum.
28If the system has an older version of Python 3, then users will have to select 28If the system has an older version of Python 3, then users will have to select
29the legacy Python 2 branch instead. 29the legacy Python 2 branch instead.
30 30
31### repo hooks
31 32
33Projects that use [repo hooks] run on independent schedules.
34They might migrate to Python 3 earlier or later than us.
35To support them, we'll probe the shebang of the hook script and if we find an
36interpreter in there that indicates a different version than repo is currently
37running under, we'll attempt to reexec ourselves under that.
38
39For example, a hook with a header like `#!/usr/bin/python2` will have repo
40execute `/usr/bin/python2` to execute the hook code specifically if repo is
41currently running Python 3.
42
43For more details, consult the [repo hooks] documentation.
44
45
46[repo hooks]: ./repo-hooks.md
32[repo launcher]: ../repo 47[repo launcher]: ../repo
diff --git a/docs/repo-hooks.md b/docs/repo-hooks.md
index e198b390..7c37c30e 100644
--- a/docs/repo-hooks.md
+++ b/docs/repo-hooks.md
@@ -83,6 +83,31 @@ then check it directly. Hooks should not normally modify the active git repo
83the user. Although user interaction is discouraged in the common case, it can 83the user. Although user interaction is discouraged in the common case, it can
84be useful when deploying automatic fixes. 84be useful when deploying automatic fixes.
85 85
86### Shebang Handling
87
88*** note
89This is intended as a transitional feature. Hooks are expected to eventually
90migrate to Python 3 only as Python 2 is EOL & deprecated.
91***
92
93If the hook is written against a specific version of Python (either 2 or 3),
94the script can declare that explicitly. Repo will then attempt to execute it
95under the right version of Python regardless of the version repo itself might
96be executing under.
97
98Here are the shebangs that are recognized.
99
100* `#!/usr/bin/env python` & `#!/usr/bin/python`: The hook is compatible with
101 Python 2 & Python 3. For maximum compatibility, these are recommended.
102* `#!/usr/bin/env python2` & `#!/usr/bin/python2`: The hook requires Python 2.
103 Version specific names like `python2.7` are also recognized.
104* `#!/usr/bin/env python3` & `#!/usr/bin/python3`: The hook requires Python 3.
105 Version specific names like `python3.6` are also recognized.
106
107If no shebang is detected, or does not match the forms above, we assume that the
108hook is compatible with both Python 2 & Python 3 as if `#!/usr/bin/python` was
109used.
110
86## Hooks 111## Hooks
87 112
88Here are all the points available for hooking. 113Here are all the points available for hooking.