From: Jan Veldeman <jan.veldeman@advalvas.be>
To: Petr Baudis <pasky@ucw.cz>
Cc: git@vger.kernel.org
Subject: [PATCH] cogito: allow filenames with spaces in cg-commit
Date: Thu, 5 May 2005 17:40:04 +0200 [thread overview]
Message-ID: <20050505154004.GA20329@fanta> (raw)
Fixes the filename handling in cg-commit.
To allow spaces in the filenames, the filenames are kept in an array.
(The trick with zero bytes is harder to do when storing the filenames in
a variable).
"${commitfiles[@]}" is used where the filenames are needed as separate
arguments, this expands into "file 1" "file 2" ...
"${commitfiles[*]}" is used when a check is made for the existence of the
parameter, this expands into "file1 file 2 ..."
The eval changedfiles=($(... | sed ...)) is used to place the result of
git-diff-cache into the array. (I couldn't find a cleaner solution to do
this)
Signed-off-by: Jan Veldeman <Jan.Veldeman@advalvas.be>
Index: cogito/cg-commit
===================================================================
--- cogito.orig/cg-commit 2005-05-05 17:13:44.000000000 +0200
+++ cogito/cg-commit 2005-05-05 17:34:37.000000000 +0200
@@ -22,8 +22,8 @@
fi
if [ "$1" ]; then
- commitfiles="$@"
- customfiles=$commitfiles
+ commitfiles=("$@")
+ customfiles="${commitfiles[*]}"
[ "$ignorecache" ] && die "-C and listing files to commit does not make sense"
[ -s .git/merging ] && die "cannot commit individual files when merging"
@@ -37,8 +37,9 @@
# be committed along automagically as well.
if [ ! "$ignorecache" ]; then
- changedfiles=$(git-diff-cache $(tree-id) | cut -f 4-)
- commitfiles="$addedfiles $remfiles $changedfiles"
+ eval changedfiles=($(git-diff-cache $(tree-id) | cut -f 4- | \
+ sed -e 's/^/"/' -e 's/$/"/'))
+ commitfiles=($addedfiles $remfiles "${changedfiles[@]}")
fi
merging=
@@ -46,11 +47,11 @@
fi
if [ ! "$ignorecache" ]; then
- if [ ! "$commitfiles" ]; then
+ if [ ! "${commitfiles[*]}" ]; then
echo 'Nothing to commit.' >&2
exit 2
fi
- for file in $commitfiles; do
+ for file in "${commitfiles[@]}"; do
# Prepend a letter describing whether it's addition,
# removal or update. Or call git status on those files.
echo $file;
@@ -76,13 +77,13 @@
if [ ! "$ignorecache" ]; then
if [ "$customfiles" ]; then
- echo $commitfiles | xargs git-update-cache --add --remove \
+ git-update-cache --add --remove "${commitfiles[@]}" \
|| die "update-cache failed"
export GIT_INDEX_FILE=$(mktemp -t gitci.XXXXXX)
git-read-tree $(tree-id)
fi
# TODO: Do the proper separation of adds, removes, and changes.
- echo $commitfiles | xargs git-update-cache --add --remove \
+ git-update-cache --add --remove "${commitfiles[@]}" \
|| die "update-cache failed"
fi
reply other threads:[~2005-05-05 15:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20050505154004.GA20329@fanta \
--to=jan.veldeman@advalvas.be \
--cc=git@vger.kernel.org \
--cc=pasky@ucw.cz \
/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.