git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Add + Status patches
@ 2005-04-18 20:39 David Greaves
  2005-04-18 20:48 ` Petr Baudis
  2005-04-18 21:00 ` Add + Status patches Junio C Hamano
  0 siblings, 2 replies; 8+ messages in thread
From: David Greaves @ 2005-04-18 20:39 UTC (permalink / raw)
  To: Petr Baudis, git

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

Hi Petr

Thankyou for the help earlier - problem resolved.

I have a trivial patch (attached).

It allows:
 find src -type f | git add -

and fixes git status not reporting added files properly (on my debian 
system it only reported the first file in .git/add-queue)

Should I send this as a patch or as some kind of git object?
(I'm still trying to figure out git workflow)

David

-- 


[-- Attachment #2: add_status.patch --]
[-- Type: text/x-patch, Size: 2537 bytes --]

Index: README
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/README  (mode:100644 sha1:798476ad292cc6edf5a2f5782e1de82f6052abe2)
+++ 1c3349b813d463ce194be06f14ccfbcc3fc2ba30/README  (mode:100644 sha1:4282af1604e429dd767fe721751b5ac4a87c410e)
@@ -89,6 +89,10 @@
 Of course you will want to commit. If you added any new files, do
 
 	git add newfile1 newfile2 ...
+	
+or even
+
+	find src -type f | git add -
 
 first. Then feel free to commit by
 
Index: git
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/git  (mode:100755 sha1:b648169640025bd68d1b27a0fcc85b65d85e4440)
+++ 1c3349b813d463ce194be06f14ccfbcc3fc2ba30/git  (mode:100755 sha1:5f3d4d04a0adfdc26bfc6aaef5cd29eea6e5c459)
@@ -25,7 +25,7 @@
 Usage: git COMMAND [ARG]...
 
 Available commands:
-	add		FILE...
+	add		FILE...  | -    < files on stdin
 	addremote	RNAME RSYNC_URL
 	apply				< patch on stdin
 	cancel
Index: gitadd.sh
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitadd.sh  (mode:100755 sha1:3ed93ea0fcb995673ba9ee1982e0e7abdbe35982)
+++ 1c3349b813d463ce194be06f14ccfbcc3fc2ba30/gitadd.sh  (mode:100755 sha1:d010d14c0c14e0ea7a2e448b667d938fe92a3bc2)
@@ -9,10 +9,14 @@
 # FIXME: Those files are omitted from show-diff output!
 
 if [ ! "$1" ]; then
-	echo "gitadd.sh: usage: git add FILE..." >&2
+	echo "gitadd.sh: usage: git add - | FILE..." >&2
 	exit 1;
 fi
 
-for file in "$@"; do
-	echo $file >>.git/add-queue
-done
+if [ $1 == "-" ]; then
+	cat - >> .git/add-queue
+else
+	for file in "$@"; do
+		echo $file >>.git/add-queue
+	done
+fi
Index: gitstatus.sh
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitstatus.sh  (mode:100755 sha1:6c33f805ebc2630b14a88a07dfc891a9196d66a5)
+++ 1c3349b813d463ce194be06f14ccfbcc3fc2ba30/gitstatus.sh  (mode:100755 sha1:e2c7f9d56b6967c529453de675ffffaaeeff3d1c)
@@ -5,8 +5,8 @@
 
 {
 	show-files -z -t --others --deleted --unmerged
-	[ -s .git/add-queue ] && cat .git/add-queue | sed 's/^/A /' | { read x; echo -ne $x'\0'; }
-	[ -s .git/rm-queue ] && cat .git/rm-queue | sed 's/^/D /' | { read x; echo -ne $x'\0'; }
+	[ -s .git/add-queue ] && cat .git/add-queue | sed 's/^/A /' | tr '\n' '\0'
+	[ -s .git/rm-queue ] && cat .git/rm-queue | sed 's/^/D /' | tr '\n' '\0'
 } | sort -z -k 2 | xargs -0 sh -c '
 while [ "$1" ]; do
 	tag=$(echo "$1" | cut -d " " -f 1);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add + Status patches
  2005-04-18 20:39 Add + Status patches David Greaves
@ 2005-04-18 20:48 ` Petr Baudis
  2005-04-18 22:18   ` [PATCH 1/1] add, rm + status patches David Greaves
  2005-04-18 21:00 ` Add + Status patches Junio C Hamano
  1 sibling, 1 reply; 8+ messages in thread
From: Petr Baudis @ 2005-04-18 20:48 UTC (permalink / raw)
  To: David Greaves; +Cc: git

Dear diary, on Mon, Apr 18, 2005 at 10:39:00PM CEST, I got a letter
where David Greaves <david@dgreaves.com> told me that...
> Hi Petr

Hi,

> Thankyou for the help earlier - problem resolved.
> 
> I have a trivial patch (attached).
> 
> It allows:
> find src -type f | git add -
> 
> and fixes git status not reporting added files properly (on my debian 
> system it only reported the first file in .git/add-queue)

Thanks. Could you please send the patches signed off and either with
content-disposition: inline or in the mail body?

I think it would be cleaner to do the testing for the dash in the for
loop, so that I can do git add foo bar -.  Also, don't forget to update
git add's documentation at the top. For the usage string, I'd probably
prefer (-|FILE)...

thanks,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add + Status patches
  2005-04-18 20:39 Add + Status patches David Greaves
  2005-04-18 20:48 ` Petr Baudis
@ 2005-04-18 21:00 ` Junio C Hamano
  2005-04-18 22:18   ` David Greaves
  1 sibling, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2005-04-18 21:00 UTC (permalink / raw)
  To: David Greaves; +Cc: Petr Baudis, git

>>>>> "DG" == David Greaves <david@dgreaves.com> writes:

DG> Hi Petr
DG> Thankyou for the help earlier - problem resolved.

DG> I have a trivial patch (attached).

DG> It allows:
DG>  find src -type f | git add -

I am slow today, but have you considered using xargs?



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/1] add, rm + status patches
  2005-04-18 20:48 ` Petr Baudis
@ 2005-04-18 22:18   ` David Greaves
  2005-04-18 22:41     ` Petr Baudis
  0 siblings, 1 reply; 8+ messages in thread
From: David Greaves @ 2005-04-18 22:18 UTC (permalink / raw)
  To: Petr Baudis; +Cc: git

Petr Baudis wrote:

>  Thanks. Could you please send the patches signed off and either with
>  content-disposition: inline or in the mail body?
Is this OK.
Thunderbird isn't the best for attaching patches.
>
>  I think it would be cleaner to do the testing for the dash in the for
>  loop, so that I can do git add foo bar -. Also, don't forget to
>  update git add's documentation at the top. For the usage string, I'd
>  probably prefer (-|FILE)...
>
>  thanks,

Here you are:
* git add and git rm now take (-|FILE)...
* noted some bugs to be fixed
* introduced de-dupe code into add and rm
* git status reports added/removed files (although there are extra entries)
* README, git and command docs updated

I realise as I write this that I should have split these patches up - I 
will do so next time.

Has a decision been reached to _not_ code the cogito part of the git 
suite in perl?

I ask because the code in git status is getting pretty ugly.
I'd be happy to help with a preliminary port to perl.

David

Signed-off-by: David Greaves <david@dgreaves.com>
---
Index: README
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/README (mode:100644 
sha1:798476ad292cc6edf5a2f5782e1de82f6052abe2)
+++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/README (mode:100644 
sha1:4282af1604e429dd767fe721751b5ac4a87c410e)
@@ -89,6 +89,10 @@
Of course you will want to commit. If you added any new files, do

git add newfile1 newfile2 ...
+
+or even
+
+ find src -type f | git add -

first. Then feel free to commit by

Index: git
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/git (mode:100755 
sha1:b648169640025bd68d1b27a0fcc85b65d85e4440)
+++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/git (mode:100755 
sha1:2549bc3dc36ec00e747e91edb6e839be0f37ae4a)
@@ -25,7 +25,7 @@
Usage: git COMMAND [ARG]...

Available commands:
- add FILE...
+ add (-|FILE)...
addremote RNAME RSYNC_URL
apply < patch on stdin
cancel
@@ -41,7 +41,7 @@
lsremote
merge -b BASE_ID FROM_ID
pull [RNAME]
- rm FILE...
+ rm (-|FILE)...
seek [COMMIT_ID]
status
tag TNAME [COMMIT_ID]
Index: gitadd.sh
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitadd.sh (mode:100755 
sha1:3ed93ea0fcb995673ba9ee1982e0e7abdbe35982)
+++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/gitadd.sh (mode:100755 
sha1:a3e83ac52abd5a9cdc6abd560f95b2f19646fd99)
@@ -5,14 +5,26 @@
#
# Takes a list of file names at the command line, and schedules them
# for addition to the GIT repository at the next commit.
+# If one of the filenames is '-' then also read a filelist from STDIN
#
# FIXME: Those files are omitted from show-diff output!
+# FIXME: No checking against git-ignore
+# FIXME: No checking against .git/del-queue
+

if [ ! "$1" ]; then
- echo "gitadd.sh: usage: git add FILE..." >&2
+ echo "gitadd.sh: usage: git add (-|FILE)..." >&2
exit 1;
fi

for file in "$@"; do
- echo $file >>.git/add-queue
+ if [ $file = "-" -a ! "$DONE_STDIN" ]; then
+ cat >> .git/add-queue
+ DONE_STDIN=1
+ else
+ echo $file >>.git/add-queue
+ fi
done
+
+# Remove duplicates
+sort < .git/add-queue | uniq > .git/add-queue
\ No newline at end of file
Index: gitrm.sh
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitrm.sh (mode:100755 
sha1:5c18c38a890c9fd9ad2b866ee7b529539d2f3f8f)
+++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/gitrm.sh (mode:100755 
sha1:d76542dd6ad892fbbdc93e475aa9b77dd2922fe5)
@@ -5,15 +5,28 @@
#
# Takes a list of file names at the command line, and schedules them
# for addition to the GIT repository at the next commit.
+# If one of the filenames is '-' then also read a filelist from STDIN
#
# FIXME: Those files are omitted from show-diff output!
+# FIXME: No checking against git-ignore
+# FIXME: No checking against .git/add-queue
+# FIXME: Files read in on stdin aren't validated to exist
+

if [ ! "$1" ]; then
- echo "gitrm.sh: usage: git rm FILE..." >&2
+ echo "gitrm.sh: usage: git rm (-|FILE)..." >&2
exit 1;
fi

for file in "$@"; do
- [ -e "$file" ] && rm "$file"
- echo $file >>.git/rm-queue
+ if [ $file = "-" -a ! "$DONE_STDIN" ]; then
+ cat >> .git/rm-queue
+ DONE_STDIN=1
+ else
+ [ -e "$file" ] && rm "$file"
+ echo $file >>.git/rm-queue
+ fi
done
+
+# Remove duplicates
+sort < .git/rm-queue | uniq > .git/rm-queue
\ No newline at end of file
Index: gitstatus.sh
===================================================================
--- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitstatus.sh (mode:100755 
sha1:6c33f805ebc2630b14a88a07dfc891a9196d66a5)
+++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/gitstatus.sh (mode:100755 
sha1:2611d00189e5d03ba8356ec0e4c3af107bae6981)
@@ -3,10 +3,12 @@
# Show status of entries in your working tree.
# Copyright (c) Petr Baudis, 2005

+# FIXME: newly added files show up twice as ? _AND_ A
+
{
show-files -z -t --others --deleted --unmerged
- [ -s .git/add-queue ] && cat .git/add-queue | sed 's/^/A /' | { read 
x; echo -ne $x'\0'; }
- [ -s .git/rm-queue ] && cat .git/rm-queue | sed 's/^/D /' | { read x; 
echo -ne $x'\0'; }
+ [ -s .git/add-queue ] && cat .git/add-queue | sed 's/^/A /' | tr '\n' '\0'
+ [ -s .git/rm-queue ] && cat .git/rm-queue | sed 's/^/D /' | tr '\n' '\0'
} | sort -z -k 2 | xargs -0 sh -c '
while [ "$1" ]; do
tag=$(echo "$1" | cut -d " " -f 1);


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add + Status patches
  2005-04-18 21:00 ` Add + Status patches Junio C Hamano
@ 2005-04-18 22:18   ` David Greaves
  2005-04-18 22:25     ` Junio C Hamano
  2005-04-18 22:35     ` Petr Baudis
  0 siblings, 2 replies; 8+ messages in thread
From: David Greaves @ 2005-04-18 22:18 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Petr Baudis, git

Junio C Hamano wrote:

>DG> It allows:
>DG>  find src -type f | git add -
>
>I am slow today, but have you considered using xargs?
>
>  
>
yep thanks :)
I know you _could_ do it with xargs - but you _could_ use the raw git 
commands too. This is a "be nice to the user" layer and I was 
'surprised' that neither
git add .
nor
git add -r .
worked.

That meant that I had to fix it so I started with the ability to handle 
a list and, since I got a friendly response, I can hopefully move on to 
help make git nicer to use for mere mortals.

David

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add + Status patches
  2005-04-18 22:18   ` David Greaves
@ 2005-04-18 22:25     ` Junio C Hamano
  2005-04-18 22:35     ` Petr Baudis
  1 sibling, 0 replies; 8+ messages in thread
From: Junio C Hamano @ 2005-04-18 22:25 UTC (permalink / raw)
  To: David Greaves; +Cc: Petr Baudis, git

>>>>> "DG" == David Greaves <david@dgreaves.com> writes:

DG> ... neither
DG> git add .
DG> nor
DG> git add -r .
DG> worked.

These would be much much much nicer than pipe the list of
filenames from stdin which reminds me of cpio ;-).


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add + Status patches
  2005-04-18 22:18   ` David Greaves
  2005-04-18 22:25     ` Junio C Hamano
@ 2005-04-18 22:35     ` Petr Baudis
  1 sibling, 0 replies; 8+ messages in thread
From: Petr Baudis @ 2005-04-18 22:35 UTC (permalink / raw)
  To: David Greaves; +Cc: Junio C Hamano, git

Dear diary, on Tue, Apr 19, 2005 at 12:18:12AM CEST, I got a letter
where David Greaves <david@dgreaves.com> told me that...
> Junio C Hamano wrote:
> 
> >DG> It allows:
> >DG>  find src -type f | git add -
> >
> >I am slow today, but have you considered using xargs?
> >
> > 
> >
> yep thanks :)
> I know you _could_ do it with xargs - but you _could_ use the raw git 
> commands too. This is a "be nice to the user" layer and I was 
> 'surprised' that neither
> git add .
> nor
> git add -r .
> worked.

Actually, when I saw your patch, the xargs solution rushed through my
mind but I thought that '-' might be practical too. Thinking about it, I
couldn't come up with anything. So, what about instead making git add .
to work? ;-)

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] add, rm + status patches
  2005-04-18 22:18   ` [PATCH 1/1] add, rm + status patches David Greaves
@ 2005-04-18 22:41     ` Petr Baudis
  0 siblings, 0 replies; 8+ messages in thread
From: Petr Baudis @ 2005-04-18 22:41 UTC (permalink / raw)
  To: David Greaves; +Cc: git

Dear diary, on Tue, Apr 19, 2005 at 12:18:07AM CEST, I got a letter
where David Greaves <david@dgreaves.com> told me that...
> Petr Baudis wrote:
> 
> > Thanks. Could you please send the patches signed off and either with
> > content-disposition: inline or in the mail body?
> Is this OK.
> Thunderbird isn't the best for attaching patches.

Yes. The patch you inserted is useless, whitespaces are mangled away.

> > I think it would be cleaner to do the testing for the dash in the for
> > loop, so that I can do git add foo bar -. Also, don't forget to
> > update git add's documentation at the top. For the usage string, I'd
> > probably prefer (-|FILE)...
> >
> > thanks,
> 
> Here you are:
> * git add and git rm now take (-|FILE)...
> * noted some bugs to be fixed
> * introduced de-dupe code into add and rm
> * git status reports added/removed files (although there are extra entries)
> * README, git and command docs updated
> 
> I realise as I write this that I should have split these patches up - I 
> will do so next time.

Well, I didn't ask you to split the patch the first time since it was
quite trivial for me to do, but this is too much. ;-)

> Has a decision been reached to _not_ code the cogito part of the git 
> suite in perl?
> 
> I ask because the code in git status is getting pretty ugly.
> I'd be happy to help with a preliminary port to perl.

I'm fine with Perl. I chose shell for the very initial implementation since
it actually was simplest, but now, I wouldn't have anything against Perl
if it makes is simpler. (And as long as your Perl is nice. I'm harsh
reviewer. ;-)

> Index: gitadd.sh
> ===================================================================
> --- c0aff9b98c4242ab8965c428241df1d8f7a1d4bb/gitadd.sh (mode:100755 
> sha1:3ed93ea0fcb995673ba9ee1982e0e7abdbe35982)
> +++ cd5cd7a9272ce1966aca3bfce15f703e33cafc04/gitadd.sh (mode:100755 
> sha1:a3e83ac52abd5a9cdc6abd560f95b2f19646fd99)
> \ No newline at end of file

Note this. Something is wrong with your text editor, too.

Kind regards,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-04-18 22:37 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-18 20:39 Add + Status patches David Greaves
2005-04-18 20:48 ` Petr Baudis
2005-04-18 22:18   ` [PATCH 1/1] add, rm + status patches David Greaves
2005-04-18 22:41     ` Petr Baudis
2005-04-18 21:00 ` Add + Status patches Junio C Hamano
2005-04-18 22:18   ` David Greaves
2005-04-18 22:25     ` Junio C Hamano
2005-04-18 22:35     ` Petr Baudis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).