tg patch won't work in a sub directory of the working tree, because 'git diff --name-only' prints the names relative to the top working tree. This is only a quick fix which prefixes all file names with 'git rev-parse --show-cdup'. The right solution would be to cd into the top working tree somewhere in tg.sh. Signed-off-by: Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> --- tg-patch.sh | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/tg-patch.sh b/tg-patch.sh index d701c54..e33bab2 100644 --- a/tg-patch.sh +++ b/tg-patch.sh @@ -50,13 +50,18 @@ cat_file "$topic:.topmsg" echo [ -n "$(git grep $diff_opts '^[-]--' ${diff_committed_only:+"$name"} -- ".topmsg")" ] || echo '---' +# if we are in a sub working tree dir, we need to prefix all file names from +# git diff --name-only with this cdup +cdup=$(git rev-parse --show-cdup) + # Evil obnoxious hack to work around the lack of git diff --exclude git_is_stupid="$(mktemp -t tg-patch-changes.XXXXXX)" git diff --name-only $diff_opts "$base_rev" ${diff_committed_only:+"$name"} -- | fgrep -vx ".topdeps" | fgrep -vx ".topmsg" >"$git_is_stupid" || : # fgrep likes to fail randomly? if [ -s "$git_is_stupid" ]; then - cat "$git_is_stupid" | xargs git diff --patch-with-stat $diff_opts "$base_rev" ${diff_committed_only:+"$name"} -- + sed -e "s#^#$cdup#" "$git_is_stupid" | + xargs git diff --patch-with-stat $diff_opts "$base_rev" ${diff_committed_only:+"$name"} -- else echo "No changes." fi -- tg: (d145a7b..) bw/fix-tg-patch-in-sub-dir (depends on: master) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html