Re: [PATCH] cg-commit chokes when given a very large list of files
This patch is broken. The original patch still works.
Bryan
Bryan Larsen wrote:
Show 33 quoted lines
> cg-commit currently chokes when passed a very large list of files.
> Fix it.
>
> This patch depends on your filenames not containing line feeds. No
> big deal, other parts of cogito break on filenames containing line
> feeds.
>
> Resent because previous send appears to have been dropped. This patch
> is cleaner.
>
> Signed-off-by: Bryan Larsen <bryan.larsen@gmail.com>
> ---
>
> cg-commit | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/cg-commit b/cg-commit
> --- a/cg-commit
> +++ b/cg-commit
> @@ -289,9 +289,9 @@ precommit_update () {
> eval "queue$op[\${#queue$op[@]}]=\"\$fname\""
> done
> # XXX: Do we even need to do the --add and --remove update-caches?
> - [ "$queueN" ] && { git-update-cache --add ${infoonly} -- "${queueN[@]}" || return 1; }
> - [ "$queueD" ] && { git-update-cache --force-remove -- "${queueD[@]}" || return 1; }
> - [ "$queueM" ] && { git-update-cache ${infoonly} -- "${queueM[@]}" || return 1; }
> + [ "$queueN" ] && { ( echo "${queueN[*]}" | tr \\n \\0 | IFS=$'\n' xargs -0 git-update-cache --add ${infoonly} -- ) || return 1; }
> + [ "$queueD" ] && { ( echo "${queueD[*]}" | tr \\n \\0 | IFS=$'\n' xargs -0 git-update-cache --force-remove -- ) || return 1; }
> + [ "$queueM" ] && { ( echo "${queueM[*]}" | tr \\n \\0 | IFS=$'\n' xargs -0 git-update-cache ${infoonly} -- ) || return 1; }
> return 0
> }
>
>