[TopGit PATCH 08/11] tg-files: list files changed by the topic branch
From: Bert Wesarg <hidden>
Date: 2016-06-15 22:49:44
Subsystem:
the rest · Maintainer:
Linus Torvalds
this could also be a --name-only option to tg-patch. But I Like the similarity to 'quilt files'. Signed-off-by: Bert Wesarg <redacted> --- .gitignore | 2 ++ README | 8 ++++++++ contrib/tg-completion.bash | 1 + tg-files.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 0 deletions(-) create mode 100644 tg-files.sh
diff --git a/.gitignore b/.gitignore
index 3298889..2a4d165 100644 .gitignore
--- a/.gitignore
+++ b/.gitignore@@ -22,6 +22,8 @@ /tg-depend.txt /tg-export /tg-export.txt +/tg-files +/tg-files.txt /tg-import /tg-import.txt /tg-info
diff --git a/README b/README
index 538659a..c5a8ae0 100644 README
--- a/README
+++ b/README@@ -533,6 +533,14 @@ tg log repository, so you will not see work done by your collaborators. +tg files +~~~~~~~~ + List files changed by the current or specified topic branch. + + Options: + -i list files based on index instead of branch + -w list files based on working tree instead of branch + TODO: tg rename
diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash
index b7051b8..ddc7655 100755 contrib/tg-completion.bash
--- a/contrib/tg-completion.bash
+++ b/contrib/tg-completion.bash@@ -494,6 +494,7 @@ _tg () delete) _tg_delete ;; depend) _tg_depend ;; export) _tg_export ;; + files) _tg_patch ;; help) _tg_help ;; import) _tg_import ;; info) _tg_info ;;
diff --git a/tg-files.sh b/tg-files.sh
new file mode 100644
index 0000000..ab97624 tg-files.sh
--- /dev/null
+++ b/tg-files.sh@@ -0,0 +1,43 @@ +#!/bin/sh +# TopGit - A different patch queue manager +# (c) Petr Baudis <pasky@suse.cz> 2008 +# GPLv2 + +name= +head_from= + + +## Parse options + +while [ -n "$1" ]; do + arg="$1"; shift + case "$arg" in + -i|-w) + [ -z "$head_from" ] || die "-i and -w are mutually exclusive" + head_from="$arg";; + -*) + echo "Usage: tg [...] files [-i | -w] [NAME]" >&2 + exit 1;; + *) + [ -z "$name" ] || die "name already specified ($name)" + name="$arg";; + esac +done + + +head="$(git symbolic-ref HEAD)" +head="${head#refs/heads/}" + +[ -n "$name" ] || + name="$head" +base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" || + die "not a TopGit-controlled branch" + +if [ -n "$head_from" ] && [ "$name" != "$head" ]; then + die "$head_from makes only sense for the current branch" +fi + +b_tree=$(pretty_tree "$name" -b) +t_tree=$(pretty_tree "$name" $head_from) + +git diff-tree --name-only -r $b_tree $t_tree
--
1.7.1.1067.g5aeb7