summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--completion.bash1
-rw-r--r--man/repo-list.112
-rw-r--r--subcmds/list.py16
3 files changed, 22 insertions, 7 deletions
diff --git a/completion.bash b/completion.bash
index 04347ce3..6a5bfe1c 100644
--- a/completion.bash
+++ b/completion.bash
@@ -37,6 +37,7 @@ __complete_repo_list_branches() {
37__complete_repo_list_projects() { 37__complete_repo_list_projects() {
38 local repo=${COMP_WORDS[0]} 38 local repo=${COMP_WORDS[0]}
39 "${repo}" list -n 2>/dev/null 39 "${repo}" list -n 2>/dev/null
40 "${repo}" list -p --relative-to=. 2>/dev/null
40} 41}
41 42
42# Complete the repo <command> argument. 43# Complete the repo <command> argument.
diff --git a/man/repo-list.1 b/man/repo-list.1
index a86315ae..7f85e612 100644
--- a/man/repo-list.1
+++ b/man/repo-list.1
@@ -27,15 +27,19 @@ project is in
27\fB\-a\fR, \fB\-\-all\fR 27\fB\-a\fR, \fB\-\-all\fR
28show projects regardless of checkout state 28show projects regardless of checkout state
29.TP 29.TP
30\fB\-f\fR, \fB\-\-fullpath\fR
31display the full work tree path instead of the
32relative path
33.TP
34\fB\-n\fR, \fB\-\-name\-only\fR 30\fB\-n\fR, \fB\-\-name\-only\fR
35display only the name of the repository 31display only the name of the repository
36.TP 32.TP
37\fB\-p\fR, \fB\-\-path\-only\fR 33\fB\-p\fR, \fB\-\-path\-only\fR
38display only the path of the repository 34display only the path of the repository
35.TP
36\fB\-f\fR, \fB\-\-fullpath\fR
37display the full work tree path instead of the
38relative path
39.TP
40\fB\-\-relative\-to\fR=\fI\,PATH\/\fR
41display paths relative to this one (default: top of
42repo client checkout)
39.SS Logging options: 43.SS Logging options:
40.TP 44.TP
41\fB\-v\fR, \fB\-\-verbose\fR 45\fB\-v\fR, \fB\-\-verbose\fR
diff --git a/subcmds/list.py b/subcmds/list.py
index 8d0c5640..6adf85b7 100644
--- a/subcmds/list.py
+++ b/subcmds/list.py
@@ -12,6 +12,8 @@
12# See the License for the specific language governing permissions and 12# See the License for the specific language governing permissions and
13# limitations under the License. 13# limitations under the License.
14 14
15import os
16
15from command import Command, MirrorSafeCommand 17from command import Command, MirrorSafeCommand
16 18
17 19
@@ -43,20 +45,26 @@ This is similar to running: repo forall -c 'echo "$REPO_PATH : $REPO_PROJECT"'.
43 p.add_option('-a', '--all', 45 p.add_option('-a', '--all',
44 action='store_true', 46 action='store_true',
45 help='show projects regardless of checkout state') 47 help='show projects regardless of checkout state')
46 p.add_option('-f', '--fullpath',
47 dest='fullpath', action='store_true',
48 help='display the full work tree path instead of the relative path')
49 p.add_option('-n', '--name-only', 48 p.add_option('-n', '--name-only',
50 dest='name_only', action='store_true', 49 dest='name_only', action='store_true',
51 help='display only the name of the repository') 50 help='display only the name of the repository')
52 p.add_option('-p', '--path-only', 51 p.add_option('-p', '--path-only',
53 dest='path_only', action='store_true', 52 dest='path_only', action='store_true',
54 help='display only the path of the repository') 53 help='display only the path of the repository')
54 p.add_option('-f', '--fullpath',
55 dest='fullpath', action='store_true',
56 help='display the full work tree path instead of the relative path')
57 p.add_option('--relative-to', metavar='PATH',
58 help='display paths relative to this one (default: top of repo client checkout)')
55 59
56 def ValidateOptions(self, opt, args): 60 def ValidateOptions(self, opt, args):
57 if opt.fullpath and opt.name_only: 61 if opt.fullpath and opt.name_only:
58 self.OptionParser.error('cannot combine -f and -n') 62 self.OptionParser.error('cannot combine -f and -n')
59 63
64 # Resolve any symlinks so the output is stable.
65 if opt.relative_to:
66 opt.relative_to = os.path.realpath(opt.relative_to)
67
60 def Execute(self, opt, args): 68 def Execute(self, opt, args):
61 """List all projects and the associated directories. 69 """List all projects and the associated directories.
62 70
@@ -76,6 +84,8 @@ This is similar to running: repo forall -c 'echo "$REPO_PATH : $REPO_PROJECT"'.
76 def _getpath(x): 84 def _getpath(x):
77 if opt.fullpath: 85 if opt.fullpath:
78 return x.worktree 86 return x.worktree
87 if opt.relative_to:
88 return os.path.relpath(x.worktree, opt.relative_to)
79 return x.relpath 89 return x.relpath
80 90
81 lines = [] 91 lines = []