summaryrefslogtreecommitdiffstats
path: root/man/repo-forall.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/repo-forall.1')
-rw-r--r--man/repo-forall.1127
1 files changed, 127 insertions, 0 deletions
diff --git a/man/repo-forall.1 b/man/repo-forall.1
new file mode 100644
index 00000000..194f4d20
--- /dev/null
+++ b/man/repo-forall.1
@@ -0,0 +1,127 @@
1.\" DO NOT MODIFY THIS FILE! It was generated by help2man.
2.TH REPO "1" "July 2021" "repo forall" "Repo Manual"
3.SH NAME
4repo \- repo forall - manual page for repo forall
5.SH SYNOPSIS
6.B repo
7\fI\,forall \/\fR[\fI\,<project>\/\fR...] \fI\,-c <command> \/\fR[\fI\,<arg>\/\fR...]
8.SH DESCRIPTION
9Summary
10.PP
11Run a shell command in each project
12.PP
13repo forall \fB\-r\fR str1 [str2] ... \fB\-c\fR <command> [<arg>...]
14.SH OPTIONS
15.TP
16\fB\-h\fR, \fB\-\-help\fR
17show this help message and exit
18.TP
19\fB\-j\fR JOBS, \fB\-\-jobs\fR=\fI\,JOBS\/\fR
20number of jobs to run in parallel (default: 4)
21.TP
22\fB\-r\fR, \fB\-\-regex\fR
23execute the command only on projects matching regex or
24wildcard expression
25.TP
26\fB\-i\fR, \fB\-\-inverse\-regex\fR
27execute the command only on projects not matching
28regex or wildcard expression
29.TP
30\fB\-g\fR GROUPS, \fB\-\-groups\fR=\fI\,GROUPS\/\fR
31execute the command only on projects matching the
32specified groups
33.TP
34\fB\-c\fR, \fB\-\-command\fR
35command (and arguments) to execute
36.TP
37\fB\-e\fR, \fB\-\-abort\-on\-errors\fR
38abort if a command exits unsuccessfully
39.TP
40\fB\-\-ignore\-missing\fR
41silently skip & do not exit non\-zero due missing
42checkouts
43.TP
44\fB\-\-interactive\fR
45force interactive usage
46.SS Logging options:
47.TP
48\fB\-v\fR, \fB\-\-verbose\fR
49show all output
50.TP
51\fB\-q\fR, \fB\-\-quiet\fR
52only show errors
53.TP
54\fB\-p\fR
55show project headers before output
56.PP
57Run `repo help forall` to view the detailed manual.
58.SH DETAILS
59.PP
60Executes the same shell command in each project.
61.PP
62The \fB\-r\fR option allows running the command only on projects matching regex or
63wildcard expression.
64.PP
65By default, projects are processed non\-interactively in parallel. If you want to
66run interactive commands, make sure to pass \fB\-\-interactive\fR to force \fB\-\-jobs\fR 1.
67While the processing order of projects is not guaranteed, the order of project
68output is stable.
69.PP
70Output Formatting
71.PP
72The \fB\-p\fR option causes 'repo forall' to bind pipes to the command's stdin, stdout
73and stderr streams, and pipe all output into a continuous stream that is
74displayed in a single pager session. Project headings are inserted before the
75output of each command is displayed. If the command produces no output in a
76project, no heading is displayed.
77.PP
78The formatting convention used by \fB\-p\fR is very suitable for some types of
79searching, e.g. `repo forall \fB\-p\fR \fB\-c\fR git log \fB\-SFoo\fR` will print all commits that
80add or remove references to Foo.
81.PP
82The \fB\-v\fR option causes 'repo forall' to display stderr messages if a command
83produces output only on stderr. Normally the \fB\-p\fR option causes command output to
84be suppressed until the command produces at least one byte of output on stdout.
85.PP
86Environment
87.PP
88pwd is the project's working directory. If the current client is a mirror
89client, then pwd is the Git repository.
90.PP
91REPO_PROJECT is set to the unique name of the project.
92.PP
93REPO_PATH is the path relative the the root of the client.
94.PP
95REPO_REMOTE is the name of the remote system from the manifest.
96.PP
97REPO_LREV is the name of the revision from the manifest, translated to a local
98tracking branch. If you need to pass the manifest revision to a locally executed
99git command, use REPO_LREV.
100.PP
101REPO_RREV is the name of the revision from the manifest, exactly as written in
102the manifest.
103.PP
104REPO_COUNT is the total number of projects being iterated.
105.PP
106REPO_I is the current (1\-based) iteration count. Can be used in conjunction with
107REPO_COUNT to add a simple progress indicator to your command.
108.PP
109REPO__* are any extra environment variables, specified by the "annotation"
110element under any project element. This can be useful for differentiating trees
111based on user\-specific criteria, or simply annotating tree details.
112.PP
113shell positional arguments ($1, $2, .., $#) are set to any arguments following
114<command>.
115.PP
116Example: to list projects:
117.IP
118repo forall \fB\-c\fR 'echo $REPO_PROJECT'
119.PP
120Notice that $REPO_PROJECT is quoted to ensure it is expanded in the context of
121running <command> instead of in the calling shell.
122.PP
123Unless \fB\-p\fR is used, stdin, stdout, stderr are inherited from the terminal and are
124not redirected.
125.PP
126If \fB\-e\fR is used, when a command exits unsuccessfully, 'repo forall' will abort
127without iterating through the remaining projects.