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$(echo .)be \
--cc=git@vger$(echo .)kernel.org \
--cc=pasky@ucw$(echo .)cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox