threads / patch / 1271

patchcg-commit chokes when given a very large list of files

Subject: [PATCH] cg-commit chokes when given a very large list of files

## tl;dr

2 messages between Jul 18, 2005 and Jul 18, 2005. Diffs are folded; open one to read it.

replies: 1people: 1as markdown or json

Bryan Larsen· Jul 18, 2005, 03:18 UTC · lore

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(-)
Show changes to cg-commit +3 −3
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
 }
 
Bryan Larsen· Jul 18, 2005, 03:29 UTC · re: Bryan Larsen · lore

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
>  }
>  
> 

← back to recent threads