From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Bert Wesarg <bert.wesarg@googlemail.com>
Cc: git@vger.kernel.org, Peter Simons <simons@cryp.to>,
pasky@suse.cz, Per Cederqvist <ceder@lysator.liu.se>,
Olaf Dabrunz <odabrunz@gmx.net>,
Thomas Moschny <thomas.moschny@gmx.de>,
martin f krafft <madduck@madduck.net>
Subject: Re: [TopGit PATCH] tg-files: list files changed by the topic branch
Date: Mon, 4 Oct 2010 15:52:00 +0200 [thread overview]
Message-ID: <20101004135200.GD11737@pengutronix.de> (raw)
In-Reply-To: <1286198194-12873-1-git-send-email-bert.wesarg@googlemail.com>
On Mon, Oct 04, 2010 at 03:16:34PM +0200, Bert Wesarg wrote:
> this could also be a --name-only option to tg-patch. But I Like the
> similarity to 'quilt files'.
>
> Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>
> ---
>
> > For these we need pretty_tree -i and pretty_tree -w?!
> Done and moved to tg.sh. tg-patch should now be updated.
>
> Regards,
> Bert
>
> .gitignore | 2 +
> README | 8 +++++++
> contrib/tg-completion.bash | 1 +
> tg-export.sh | 9 --------
> tg-files.sh | 43 ++++++++++++++++++++++++++++++++++++++
> tg.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++
> 6 files changed, 103 insertions(+), 9 deletions(-)
>
> diff --git a/.gitignore b/.gitignore
> index 0342e09..0dc4d0e 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 f103d92..46f564a 100644 README
> --- a/README
> +++ b/README
> @@ -272,6 +272,14 @@ tg depend
>
> TODO: Subcommand for removing dependencies, obviously
>
> +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
> +
> tg info
> ~~~~~~~
> Show a summary information about the current or specified
> diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash
> index 0ee233c..38567d0 100755 contrib/tg-completion.bash
> --- a/contrib/tg-completion.bash
> +++ b/contrib/tg-completion.bash
> @@ -467,6 +467,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-export.sh b/tg-export.sh
> index 6d82d55..4b0148c 100644 tg-export.sh
> --- a/tg-export.sh
> +++ b/tg-export.sh
> @@ -63,15 +63,6 @@ trap 'rm -rf "$playground"' EXIT
>
> ## Collapse driver
>
> -# pretty_tree NAME
> -# Output tree ID of a cleaned-up tree without tg's artifacts.
> -pretty_tree()
> -{
> - git ls-tree --full-tree "$1" \
> - | awk -F ' ' '$2 !~ /^.top/' \
> - | git mktree
> -}
> -
> create_tg_commit()
> {
> name="$1"
> diff --git a/tg-files.sh b/tg-files.sh
> new file mode 100644
> index 0000000..4e9c5cd 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=
> +topic=
> +
> +
> +## Parse options
> +
> +while [ -n "$1" ]; do
> + arg="$1"; shift
> + case "$arg" in
> + -i)
> + [ -z "$topic" ] || die "-i and -w are mutually exclusive"
> + topic=-i;;
> + -w)
> + [ -z "$topic" ] || die "-i and -w are mutually exclusive"
> + topic=-w;;
> + -*)
> + echo "Usage: tg [...] files [-i | -w] [NAME]" >&2
> + exit 1;;
> + *)
> + [ -z "$name" ] || die "name already specified ($name)"
> + name="$arg";;
> + esac
> +done
> +
> +
> +[ -n "$name" -a -n "$topic" ] &&
> + die "-i/-w are mutually exclusive with NAME"
> +
> +[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')"
> +base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" ||
> + die "not a TopGit-controlled branch"
> +
> +b_tree=$(prett_tree "$name" -b)
> +t_tree=$(prett_tree "$name" $topic)
> +
> +git diff-tree --name-only -r $b_tree $t_tree
> +
> +# vim:noet
> diff --git a/tg.sh b/tg.sh
> index 9d08d63..ff39483 100644 tg.sh
> --- a/tg.sh
> +++ b/tg.sh
> @@ -39,6 +39,55 @@ cat_file()
> esac
> }
>
> +# get tree for topic
> +get_tree_()
> +{
> + echo "$1"
> +}
> +
> +# get tree for base
> +get_tree_b()
> +{
> + echo "refs/top-bases/$1"
> +}
> +
> +# get tree for index
> +get_tree_i()
> +{
> + git write-tree
> +}
> +
> +# get tree for worktree
> +get_tree_w()
> +{
> + i_tree=$(git write-tree)
> + (
> + TMP_INDEX="$(mktemp -t tg-files-index.XXXXXX)"
> + rm -f "$TMP_INDEX" &&
why remove the temp file here?
> + : ${GIT_DIR:="$root_dir/.git"} &&
> + cp -p ${GIT_INDEX_FILE-"$GIT_DIR/index"} "$TMP_INDEX" &&
> + GIT_INDEX_FILE="$TMP_INDEX" &&
> + export GIT_INDEX_FILE &&
> + git read-tree -m $i_tree &&
Couldn't the same be done by just doing:
git read-tree -m $i_tree --index-output="$TMP_INDEX"
> + git diff --name-only -z HEAD |
> + git update-index -z --add --remove --stdin &&
> + git write-tree &&
> + rm -f "$TMP_INDEX"
> + )
> +}
> +
> +# pretty_tree NAME [-b | -i | -w]
> +# Output tree ID of a cleaned-up tree without tg's artifacts.
> +# NAME will be ignored for -i and -w, but needs to be present
> +prett_tree()
Can we please have the y back? :-)
> +{
> + name=$1
> + source=${2#?}
> + git ls-tree --full-tree "$(get_tree_$source "$name")" |
> + awk -F ' ' '$2 !~ /^.top/' |
> + git mktree
> +}
> +
> # setup_hook NAME
> setup_hook()
> {
> --
> tg: (9404aa1..) bw/files (depends on: master)
>
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
next prev parent reply other threads:[~2010-10-04 13:52 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-03 19:15 planning a new topgit release Uwe Kleine-König
2010-10-03 21:21 ` Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 1/6] Let tg-update take a branch parameter Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 2/6] tg-remote: use default remote if non is given Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 3/6] tg-files: list files changed by the topic branch Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 4/6] tg-prev/tg-next: commands to explore dependencies Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 5/6] put die() messages to stderr Bert Wesarg
2010-10-03 21:25 ` [TopGit PATCH 6/6] tg-log: short cut to git log Bert Wesarg
[not found] ` <AANLkTi=Kwx5avY7xRdWLS931zK2fi7cj5Q8u3++bqRO+@mail.gmail.com>
2010-10-04 6:45 ` Bert Wesarg
2010-10-04 19:06 ` [TopGit PATCH] tg-log: move note from tg base to tg log Bert Wesarg
2010-10-04 21:05 ` Štěpán Němec
2010-10-04 21:08 ` Bert Wesarg
2010-10-04 6:45 ` [TopGit PATCH 6/6] tg-log: short cut to git log Uwe Kleine-König
2010-10-03 21:55 ` [TopGit PATCH 4/6] tg-prev/tg-next: commands to explore dependencies Uwe Kleine-König
2010-10-04 6:48 ` Bert Wesarg
2010-10-03 22:03 ` [TopGit PATCH 3/6] tg-files: list files changed by the topic branch Uwe Kleine-König
2010-10-04 6:43 ` Bert Wesarg
2010-10-04 6:47 ` Uwe Kleine-König
2010-10-04 6:50 ` Bert Wesarg
2010-10-04 6:59 ` Uwe Kleine-König
2010-10-04 13:16 ` [TopGit PATCH] " Bert Wesarg
2010-10-04 13:52 ` Uwe Kleine-König [this message]
2010-10-04 16:02 ` Bert Wesarg
2010-10-04 18:27 ` [TopGit PATCH v3] " Bert Wesarg
2010-10-04 20:09 ` [TopGit PATCH] tg-patch: use pretty_tree Bert Wesarg
2010-10-04 23:02 ` Bert Wesarg
2010-10-05 7:18 ` Uwe Kleine-König
2010-10-05 8:05 ` Bert Wesarg
2010-10-05 19:04 ` [TopGit PATCH v2] " Bert Wesarg
2010-10-05 20:01 ` Uwe Kleine-König
2010-10-05 20:14 ` Bert Wesarg
2010-10-05 7:17 ` [TopGit PATCH v3] tg-files: list files changed by the topic branch Uwe Kleine-König
2010-10-05 19:03 ` [TopGit PATCH v4] " Bert Wesarg
2010-10-05 22:02 ` Štěpán Němec
2010-10-06 6:11 ` Bert Wesarg
2010-10-03 22:00 ` [TopGit PATCH 2/6] tg-remote: use default remote if non is given Uwe Kleine-König
2010-10-04 3:13 ` Ævar Arnfjörð Bjarmason
2010-10-04 6:43 ` Uwe Kleine-König
2010-10-03 22:11 ` planning a new topgit release Uwe Kleine-König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101004135200.GD11737@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=bert.wesarg@googlemail.com \
--cc=ceder@lysator.liu.se \
--cc=git@vger.kernel.org \
--cc=madduck@madduck.net \
--cc=odabrunz@gmx.net \
--cc=pasky@suse.cz \
--cc=simons@cryp.to \
--cc=thomas.moschny@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.