[GUILT v4 25/33] guilt push now fails when there are no more patches to push.

2014-05-18 Thread Per Cederqvist
This makes it easier to script operations on the entire queue, for
example run the test suite on each patch in the queue:

guilt pop -a;while guilt push; do make test||break; done

This brings guilt push in line with the push operation in Mercurial
Queues (hg qpush), which fails when there are no patches to apply.

Updated the test suite.

guilt push -a still does not fail.  (It successfully manages to
ensure that all patches are pushed, even if it did not have to do
anything to make it so.)

Signed-off-by: Per Cederqvist ced...@opera.com
Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net
---
 guilt-push   | 19 ++-
 regression/t-020.out | 89 
 regression/t-020.sh  | 13 +++-
 3 files changed, 113 insertions(+), 8 deletions(-)

diff --git a/guilt-push b/guilt-push
index 67687e7..39c125e 100755
--- a/guilt-push
+++ b/guilt-push
@@ -56,6 +56,12 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt push as guilt push -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ $patch = -a ]; then
# we are supposed to push all patches, get the last one out of
# series
@@ -65,7 +71,7 @@ if [ $patch = -a ]; then
die There are no patches to push.
fi
 elif [ ! -z $num ]; then
-   # we are supposed to pop a set number of patches
+   # we are supposed to push a set number of patches
 
[ $patch -lt 0 ]  die Invalid number of patches to push.
 
@@ -78,11 +84,6 @@ elif [ ! -z $num ]; then
# clamp to minimum
[ $tidx -lt $eidx ]  eidx=$tidx
 
-elif [ -z $patch ]; then
-   # we are supposed to push only the next patch onto the stack
-
-   eidx=`wc -l  $applied`
-   eidx=`expr $eidx + 1`
 else
# we're supposed to push only up to a patch, make sure the patch is
# in the series
@@ -109,7 +110,11 @@ if [ $sidx -gt $eidx ]; then
else
disp File series fully applied, ends at patch `get_series | 
tail -n 1`
fi
-   exit 0
+   if [ -n $all ]; then
+   exit 0
+   else
+   exit 1
+   fi
 fi
 
 get_series | sed -n -e ${sidx},${eidx}p | while read p
diff --git a/regression/t-020.out b/regression/t-020.out
index 42433dc..bcb8797 100644
--- a/regression/t-020.out
+++ b/regression/t-020.out
@@ -270,6 +270,95 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt push
+File series fully applied, ends at patch mode
+% guilt push -a
+File series fully applied, ends at patch mode
+% list_files
+d .git/patches
+d .git/patches/master
+d .git/refs/patches
+d .git/refs/patches/master
+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status
+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series
+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify
+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add
+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode
+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove
+% git log -p
+commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch mode
+
+diff --git a/def b/def
+old mode 100644
+new mode 100755
+
+commit ffb7faa126a6d91bcdd44a494f76b96dd860b8b9
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch remove
+
+diff --git a/abd b/abd
+deleted file mode 100644
+index fd3896d..000
+--- a/abd
 /dev/null
+@@ -1 +0,0 @@
+-‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 37d588cc39848368810e88332bd03b083f2ce3ac
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch add
+
+diff --git a/abd b/abd
+new file mode 100644
+index 000..fd3896d
+--- /dev/null
 b/abd
+@@ -0,0 +1 @@
++‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 33633e7a1aa31972f125878baf7807be57b1672d
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch modify
+
+diff --git a/def b/def
+index 8baef1b..7d69c2f 100644
+--- a/def
 b/def
+@@ -1 +1,2 @@
+ abc
++asjhfksad
+
+commit d4850419ccc1146c7169f500725ce504b9774ed0
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+initial
+
+Signed-off-by: Commiter Name commiter@email
+
+diff --git a/def b/def
+new file mode 100644
+index 000..8baef1b
+--- /dev/null
 b/def
+@@ -0,0 +1 @@
++abc
 % guilt pop --all
 All patches popped.
 % guilt push
diff --git a/regression/t-020.sh b/regression/t-020.sh
index 

[GUILT v4 26/33] guilt pop now fails when there are no more patches to pop.

2014-05-18 Thread Per Cederqvist
This is analogous to how guilt push now fails when there are no more
patches to push.  Like push, the --all argument still succeeds even
if there was no need to pop anything.

Updated the test suite.

Signed-off-by: Per Cederqvist ced...@opera.com
Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net
---
 guilt-pop| 17 +++--
 regression/t-021.out |  2 ++
 regression/t-021.sh  |  6 ++
 regression/t-061.sh  |  6 +-
 4 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/guilt-pop b/guilt-pop
index f0e647f..191313e 100755
--- a/guilt-pop
+++ b/guilt-pop
@@ -49,9 +49,19 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt pop as guilt pop -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ ! -s $applied ]; then
disp No patches applied.
-   exit 0
+   if [ $patch = -a ]; then
+   exit 0
+   else
+   exit 1
+   fi
 elif [ $patch = -a ]; then
# we are supposed to pop all patches
 
@@ -68,11 +78,6 @@ elif [ ! -z $num ]; then
# catch underflow
[ $eidx -lt 0 ]  eidx=0
[ $eidx -eq $sidx ]  die No patches requested to be removed.
-elif [ -z $patch ]; then
-   # we are supposed to pop only the current patch on the stack
-
-   sidx=`wc -l  $applied`
-   eidx=`expr $sidx - 1`
 else
# we're supposed to pop only up to a patch, make sure the patch is
# in the series
diff --git a/regression/t-021.out b/regression/t-021.out
index 9b42d9c..58be12f 100644
--- a/regression/t-021.out
+++ b/regression/t-021.out
@@ -287,6 +287,8 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt pop
+No patches applied.
 % guilt push --all
 Applying patch..modify
 Patch applied.
diff --git a/regression/t-021.sh b/regression/t-021.sh
index 614e870..e0d2dc1 100755
--- a/regression/t-021.sh
+++ b/regression/t-021.sh
@@ -23,6 +23,12 @@ guilt series | _tac | while read n ; do
 done
 
 #
+# pop when there is nothing to pop
+#
+
+shouldfail guilt pop
+
+#
 # push all
 #
 cmd guilt push --all
diff --git a/regression/t-061.sh b/regression/t-061.sh
index 1411baa..6192f1b 100755
--- a/regression/t-061.sh
+++ b/regression/t-061.sh
@@ -48,7 +48,11 @@ cmd list_files
 
 for i in `seq 5`
 do
-   cmd guilt pop
+   if [ $i -ge 5 ]; then
+   shouldfail guilt pop
+   else
+   cmd guilt pop
+   fi
cmd git for-each-ref
cmd guilt push
cmd git for-each-ref
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GUILT v3 25/31] guilt push now fails when there are no more patches to push.

2014-05-16 Thread Per Cederqvist
This makes it easier to script operations on the entire queue, for
example run the test suite on each patch in the queue:

guilt pop -a;while guilt push; do make test||break; done

This brings guilt push in line with the push operation in Mercurial
Queues (hg qpush), which fails when there are no patches to apply.

Updated the test suite.

guilt push -a still does not fail.  (It successfully manages to
ensure that all patches are pushed, even if it did not have to do
anything to make it so.)

Signed-off-by: Per Cederqvist ced...@opera.com
Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net
---
 guilt-push   | 19 ++-
 regression/t-020.out | 89 
 regression/t-020.sh  | 13 +++-
 3 files changed, 113 insertions(+), 8 deletions(-)

diff --git a/guilt-push b/guilt-push
index 67687e7..39c125e 100755
--- a/guilt-push
+++ b/guilt-push
@@ -56,6 +56,12 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt push as guilt push -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ $patch = -a ]; then
# we are supposed to push all patches, get the last one out of
# series
@@ -65,7 +71,7 @@ if [ $patch = -a ]; then
die There are no patches to push.
fi
 elif [ ! -z $num ]; then
-   # we are supposed to pop a set number of patches
+   # we are supposed to push a set number of patches
 
[ $patch -lt 0 ]  die Invalid number of patches to push.
 
@@ -78,11 +84,6 @@ elif [ ! -z $num ]; then
# clamp to minimum
[ $tidx -lt $eidx ]  eidx=$tidx
 
-elif [ -z $patch ]; then
-   # we are supposed to push only the next patch onto the stack
-
-   eidx=`wc -l  $applied`
-   eidx=`expr $eidx + 1`
 else
# we're supposed to push only up to a patch, make sure the patch is
# in the series
@@ -109,7 +110,11 @@ if [ $sidx -gt $eidx ]; then
else
disp File series fully applied, ends at patch `get_series | 
tail -n 1`
fi
-   exit 0
+   if [ -n $all ]; then
+   exit 0
+   else
+   exit 1
+   fi
 fi
 
 get_series | sed -n -e ${sidx},${eidx}p | while read p
diff --git a/regression/t-020.out b/regression/t-020.out
index 42433dc..bcb8797 100644
--- a/regression/t-020.out
+++ b/regression/t-020.out
@@ -270,6 +270,95 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt push
+File series fully applied, ends at patch mode
+% guilt push -a
+File series fully applied, ends at patch mode
+% list_files
+d .git/patches
+d .git/patches/master
+d .git/refs/patches
+d .git/refs/patches/master
+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status
+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series
+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify
+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add
+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode
+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove
+% git log -p
+commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch mode
+
+diff --git a/def b/def
+old mode 100644
+new mode 100755
+
+commit ffb7faa126a6d91bcdd44a494f76b96dd860b8b9
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch remove
+
+diff --git a/abd b/abd
+deleted file mode 100644
+index fd3896d..000
+--- a/abd
 /dev/null
+@@ -1 +0,0 @@
+-‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 37d588cc39848368810e88332bd03b083f2ce3ac
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch add
+
+diff --git a/abd b/abd
+new file mode 100644
+index 000..fd3896d
+--- /dev/null
 b/abd
+@@ -0,0 +1 @@
++‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 33633e7a1aa31972f125878baf7807be57b1672d
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch modify
+
+diff --git a/def b/def
+index 8baef1b..7d69c2f 100644
+--- a/def
 b/def
+@@ -1 +1,2 @@
+ abc
++asjhfksad
+
+commit d4850419ccc1146c7169f500725ce504b9774ed0
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+initial
+
+Signed-off-by: Commiter Name commiter@email
+
+diff --git a/def b/def
+new file mode 100644
+index 000..8baef1b
+--- /dev/null
 b/def
+@@ -0,0 +1 @@
++abc
 % guilt pop --all
 All patches popped.
 % guilt push
diff --git a/regression/t-020.sh b/regression/t-020.sh
index 

[GUILT v3 26/31] guilt pop now fails when there are no more patches to pop.

2014-05-16 Thread Per Cederqvist
This is analogous to how guilt push now fails when there are no more
patches to push.  Like push, the --all argument still succeeds even
if there was no need to pop anything.

Updated the test suite.

Signed-off-by: Per Cederqvist ced...@opera.com
Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net
---
 guilt-pop| 17 +++--
 regression/t-021.out |  2 ++
 regression/t-021.sh  |  6 ++
 regression/t-061.sh  |  6 +-
 4 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/guilt-pop b/guilt-pop
index f0e647f..191313e 100755
--- a/guilt-pop
+++ b/guilt-pop
@@ -49,9 +49,19 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt pop as guilt pop -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ ! -s $applied ]; then
disp No patches applied.
-   exit 0
+   if [ $patch = -a ]; then
+   exit 0
+   else
+   exit 1
+   fi
 elif [ $patch = -a ]; then
# we are supposed to pop all patches
 
@@ -68,11 +78,6 @@ elif [ ! -z $num ]; then
# catch underflow
[ $eidx -lt 0 ]  eidx=0
[ $eidx -eq $sidx ]  die No patches requested to be removed.
-elif [ -z $patch ]; then
-   # we are supposed to pop only the current patch on the stack
-
-   sidx=`wc -l  $applied`
-   eidx=`expr $sidx - 1`
 else
# we're supposed to pop only up to a patch, make sure the patch is
# in the series
diff --git a/regression/t-021.out b/regression/t-021.out
index 9b42d9c..58be12f 100644
--- a/regression/t-021.out
+++ b/regression/t-021.out
@@ -287,6 +287,8 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt pop
+No patches applied.
 % guilt push --all
 Applying patch..modify
 Patch applied.
diff --git a/regression/t-021.sh b/regression/t-021.sh
index 614e870..e0d2dc1 100755
--- a/regression/t-021.sh
+++ b/regression/t-021.sh
@@ -23,6 +23,12 @@ guilt series | _tac | while read n ; do
 done
 
 #
+# pop when there is nothing to pop
+#
+
+shouldfail guilt pop
+
+#
 # push all
 #
 cmd guilt push --all
diff --git a/regression/t-061.sh b/regression/t-061.sh
index 1411baa..6192f1b 100755
--- a/regression/t-061.sh
+++ b/regression/t-061.sh
@@ -48,7 +48,11 @@ cmd list_files
 
 for i in `seq 5`
 do
-   cmd guilt pop
+   if [ $i -ge 5 ]; then
+   shouldfail guilt pop
+   else
+   cmd guilt pop
+   fi
cmd git for-each-ref
cmd guilt push
cmd git for-each-ref
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT v2 25/29] guilt push now fails when there are no more patches to push.

2014-05-14 Thread Per Cederqvist
On Tue, May 13, 2014 at 11:41 PM, Jeff Sipek jef...@josefsipek.net wrote:
 On Tue, May 13, 2014 at 10:31:01PM +0200, Per Cederqvist wrote:
 This makes it easier to script operations on the entire queue, for
 example run the test suite on each patch in the queue:

 guilt pop -a;while guilt push; do make test||break; done

 This brings guilt push in line with the push operation in Mercurial
 Queues (hg qpush), which fails when there are no patches to apply.

 Updated the test suite.

 guilt push -a still does not fail.  (It successfully manages to
 ensure that all patches are pushed, even if it did not have to do
 anything to make it so.)

 Signed-off-by: Per Cederqvist ced...@opera.com
 ---
  guilt-push   | 19 ++-
  regression/t-020.out | 89 
 
  regression/t-020.sh  | 13 +++-
  3 files changed, 113 insertions(+), 8 deletions(-)
 ...
 diff --git a/regression/t-020.sh b/regression/t-020.sh
 index 906aec6..0f9f85d 100755
 --- a/regression/t-020.sh
 +++ b/regression/t-020.sh
 @@ -26,6 +26,17 @@ guilt series | while read n ; do
  done

  #
 +# pushing when there is nothing to push
 +#
 +
 +shouldfail guilt push
 +cmd guilt push -a
 +
 +cmd list_files
 +
 +cmd git log -p

 I don't particularly care for the git-log.  Otherwise it looks good.

 Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net

In my defense, I was just continuing the pattern already
established in that file. Anyhow, I'll add a new commit to
the patch series that removes all git log -p from all tests.
(They are present in both t-020.sh and t-021.sh.)

/ceder

 +
 +#
  # pop all
  #
  cmd guilt pop --all
 @@ -61,7 +72,7 @@ cmd guilt pop --all

  npatches=`guilt series | wc -l`
  for n in `_seq -2 $npatches`; do
 - if [ $n -ge 0 ]; then
 + if [ $n -gt 0 ]; then
   cmd guilt push -n $n
   else
   shouldfail guilt push -n $n
 --
 1.8.3.1


 --
 Evolution, n.:
   A hypothetical process whereby infinitely improbable events occur with
   alarming frequency, order arises from chaos, and no one is given credit.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT v2 25/29] guilt push now fails when there are no more patches to push.

2014-05-14 Thread Jeff Sipek
On Wed, May 14, 2014 at 11:27:19AM +0200, Per Cederqvist wrote:
 On Tue, May 13, 2014 at 11:41 PM, Jeff Sipek jef...@josefsipek.net wrote:
  On Tue, May 13, 2014 at 10:31:01PM +0200, Per Cederqvist wrote:
  This makes it easier to script operations on the entire queue, for
  example run the test suite on each patch in the queue:
 
  guilt pop -a;while guilt push; do make test||break; done
 
  This brings guilt push in line with the push operation in Mercurial
  Queues (hg qpush), which fails when there are no patches to apply.
 
  Updated the test suite.
 
  guilt push -a still does not fail.  (It successfully manages to
  ensure that all patches are pushed, even if it did not have to do
  anything to make it so.)
 
  Signed-off-by: Per Cederqvist ced...@opera.com
  ---
   guilt-push   | 19 ++-
   regression/t-020.out | 89 
  
   regression/t-020.sh  | 13 +++-
   3 files changed, 113 insertions(+), 8 deletions(-)
  ...
  diff --git a/regression/t-020.sh b/regression/t-020.sh
  index 906aec6..0f9f85d 100755
  --- a/regression/t-020.sh
  +++ b/regression/t-020.sh
  @@ -26,6 +26,17 @@ guilt series | while read n ; do
   done
 
   #
  +# pushing when there is nothing to push
  +#
  +
  +shouldfail guilt push
  +cmd guilt push -a
  +
  +cmd list_files
  +
  +cmd git log -p
 
  I don't particularly care for the git-log.  Otherwise it looks good.
 
  Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net
 
 In my defense, I was just continuing the pattern already
 established in that file. Anyhow, I'll add a new commit to
 the patch series that removes all git log -p from all tests.
 (They are present in both t-020.sh and t-021.sh.)

Sounds good.  Thanks,

Jeff.

 /ceder
 
  +
  +#
   # pop all
   #
   cmd guilt pop --all
  @@ -61,7 +72,7 @@ cmd guilt pop --all
 
   npatches=`guilt series | wc -l`
   for n in `_seq -2 $npatches`; do
  - if [ $n -ge 0 ]; then
  + if [ $n -gt 0 ]; then
cmd guilt push -n $n
else
shouldfail guilt push -n $n
  --
  1.8.3.1
 
 
  --
  Evolution, n.:
A hypothetical process whereby infinitely improbable events occur with
alarming frequency, order arises from chaos, and no one is given credit.

-- 
UNIX is user-friendly ... it's just selective about who its friends are
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GUILT v2 25/29] guilt push now fails when there are no more patches to push.

2014-05-13 Thread Per Cederqvist
This makes it easier to script operations on the entire queue, for
example run the test suite on each patch in the queue:

guilt pop -a;while guilt push; do make test||break; done

This brings guilt push in line with the push operation in Mercurial
Queues (hg qpush), which fails when there are no patches to apply.

Updated the test suite.

guilt push -a still does not fail.  (It successfully manages to
ensure that all patches are pushed, even if it did not have to do
anything to make it so.)

Signed-off-by: Per Cederqvist ced...@opera.com
---
 guilt-push   | 19 ++-
 regression/t-020.out | 89 
 regression/t-020.sh  | 13 +++-
 3 files changed, 113 insertions(+), 8 deletions(-)

diff --git a/guilt-push b/guilt-push
index 67687e7..39c125e 100755
--- a/guilt-push
+++ b/guilt-push
@@ -56,6 +56,12 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt push as guilt push -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ $patch = -a ]; then
# we are supposed to push all patches, get the last one out of
# series
@@ -65,7 +71,7 @@ if [ $patch = -a ]; then
die There are no patches to push.
fi
 elif [ ! -z $num ]; then
-   # we are supposed to pop a set number of patches
+   # we are supposed to push a set number of patches
 
[ $patch -lt 0 ]  die Invalid number of patches to push.
 
@@ -78,11 +84,6 @@ elif [ ! -z $num ]; then
# clamp to minimum
[ $tidx -lt $eidx ]  eidx=$tidx
 
-elif [ -z $patch ]; then
-   # we are supposed to push only the next patch onto the stack
-
-   eidx=`wc -l  $applied`
-   eidx=`expr $eidx + 1`
 else
# we're supposed to push only up to a patch, make sure the patch is
# in the series
@@ -109,7 +110,11 @@ if [ $sidx -gt $eidx ]; then
else
disp File series fully applied, ends at patch `get_series | 
tail -n 1`
fi
-   exit 0
+   if [ -n $all ]; then
+   exit 0
+   else
+   exit 1
+   fi
 fi
 
 get_series | sed -n -e ${sidx},${eidx}p | while read p
diff --git a/regression/t-020.out b/regression/t-020.out
index 7e07efa..23cb9db 100644
--- a/regression/t-020.out
+++ b/regression/t-020.out
@@ -270,6 +270,95 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt push
+File series fully applied, ends at patch mode
+% guilt push -a
+File series fully applied, ends at patch mode
+% list_files
+d .git/patches
+d .git/patches/master
+d .git/refs/patches
+d .git/refs/patches/master
+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status
+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series
+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify
+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add
+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode
+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove
+% git log -p
+commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch mode
+
+diff --git a/def b/def
+old mode 100644
+new mode 100755
+
+commit ffb7faa126a6d91bcdd44a494f76b96dd860b8b9
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch remove
+
+diff --git a/abd b/abd
+deleted file mode 100644
+index fd3896d..000
+--- a/abd
 /dev/null
+@@ -1 +0,0 @@
+-‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 37d588cc39848368810e88332bd03b083f2ce3ac
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch add
+
+diff --git a/abd b/abd
+new file mode 100644
+index 000..fd3896d
+--- /dev/null
 b/abd
+@@ -0,0 +1 @@
++‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 33633e7a1aa31972f125878baf7807be57b1672d
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch modify
+
+diff --git a/def b/def
+index 8baef1b..7d69c2f 100644
+--- a/def
 b/def
+@@ -1 +1,2 @@
+ abc
++asjhfksad
+
+commit d4850419ccc1146c7169f500725ce504b9774ed0
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+initial
+
+Signed-off-by: Commiter Name commiter@email
+
+diff --git a/def b/def
+new file mode 100644
+index 000..8baef1b
+--- /dev/null
 b/def
+@@ -0,0 +1 @@
++abc
 % guilt pop --all
 All patches popped.
 % guilt push
diff --git a/regression/t-020.sh b/regression/t-020.sh
index 906aec6..0f9f85d 100755
--- a/regression/t-020.sh
+++ 

[GUILT v2 26/29] guilt pop now fails when there are no more patches to pop.

2014-05-13 Thread Per Cederqvist
This is analogous to how guilt push now fails when there are no more
patches to push.  Like push, the --all argument still succeeds even
if there was no need to pop anything.

Updated the test suite.

Signed-off-by: Per Cederqvist ced...@opera.com
---
 guilt-pop| 17 +++--
 regression/t-021.out |  2 ++
 regression/t-021.sh  |  6 ++
 regression/t-061.sh  |  6 +-
 4 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/guilt-pop b/guilt-pop
index f0e647f..191313e 100755
--- a/guilt-pop
+++ b/guilt-pop
@@ -49,9 +49,19 @@ fi
 patch=$1
 [ ! -z $all ]  patch=-a
 
+# Treat guilt pop as guilt pop -n 1.
+if [ -z $patch ]; then
+   patch=1
+   num=t
+fi
+
 if [ ! -s $applied ]; then
disp No patches applied.
-   exit 0
+   if [ $patch = -a ]; then
+   exit 0
+   else
+   exit 1
+   fi
 elif [ $patch = -a ]; then
# we are supposed to pop all patches
 
@@ -68,11 +78,6 @@ elif [ ! -z $num ]; then
# catch underflow
[ $eidx -lt 0 ]  eidx=0
[ $eidx -eq $sidx ]  die No patches requested to be removed.
-elif [ -z $patch ]; then
-   # we are supposed to pop only the current patch on the stack
-
-   sidx=`wc -l  $applied`
-   eidx=`expr $sidx - 1`
 else
# we're supposed to pop only up to a patch, make sure the patch is
# in the series
diff --git a/regression/t-021.out b/regression/t-021.out
index 9b42d9c..58be12f 100644
--- a/regression/t-021.out
+++ b/regression/t-021.out
@@ -287,6 +287,8 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt pop
+No patches applied.
 % guilt push --all
 Applying patch..modify
 Patch applied.
diff --git a/regression/t-021.sh b/regression/t-021.sh
index 614e870..e0d2dc1 100755
--- a/regression/t-021.sh
+++ b/regression/t-021.sh
@@ -23,6 +23,12 @@ guilt series | _tac | while read n ; do
 done
 
 #
+# pop when there is nothing to pop
+#
+
+shouldfail guilt pop
+
+#
 # push all
 #
 cmd guilt push --all
diff --git a/regression/t-061.sh b/regression/t-061.sh
index 1411baa..6192f1b 100755
--- a/regression/t-061.sh
+++ b/regression/t-061.sh
@@ -48,7 +48,11 @@ cmd list_files
 
 for i in `seq 5`
 do
-   cmd guilt pop
+   if [ $i -ge 5 ]; then
+   shouldfail guilt pop
+   else
+   cmd guilt pop
+   fi
cmd git for-each-ref
cmd guilt push
cmd git for-each-ref
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT v2 25/29] guilt push now fails when there are no more patches to push.

2014-05-13 Thread Jeff Sipek
On Tue, May 13, 2014 at 10:31:01PM +0200, Per Cederqvist wrote:
 This makes it easier to script operations on the entire queue, for
 example run the test suite on each patch in the queue:
 
 guilt pop -a;while guilt push; do make test||break; done
 
 This brings guilt push in line with the push operation in Mercurial
 Queues (hg qpush), which fails when there are no patches to apply.
 
 Updated the test suite.
 
 guilt push -a still does not fail.  (It successfully manages to
 ensure that all patches are pushed, even if it did not have to do
 anything to make it so.)
 
 Signed-off-by: Per Cederqvist ced...@opera.com
 ---
  guilt-push   | 19 ++-
  regression/t-020.out | 89 
 
  regression/t-020.sh  | 13 +++-
  3 files changed, 113 insertions(+), 8 deletions(-)
...
 diff --git a/regression/t-020.sh b/regression/t-020.sh
 index 906aec6..0f9f85d 100755
 --- a/regression/t-020.sh
 +++ b/regression/t-020.sh
 @@ -26,6 +26,17 @@ guilt series | while read n ; do
  done
  
  #
 +# pushing when there is nothing to push
 +#
 +
 +shouldfail guilt push
 +cmd guilt push -a
 +
 +cmd list_files
 +
 +cmd git log -p

I don't particularly care for the git-log.  Otherwise it looks good.

Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net


 +
 +#
  # pop all
  #
  cmd guilt pop --all
 @@ -61,7 +72,7 @@ cmd guilt pop --all
  
  npatches=`guilt series | wc -l`
  for n in `_seq -2 $npatches`; do
 - if [ $n -ge 0 ]; then
 + if [ $n -gt 0 ]; then
   cmd guilt push -n $n
   else
   shouldfail guilt push -n $n
 -- 
 1.8.3.1
 

-- 
Evolution, n.:
  A hypothetical process whereby infinitely improbable events occur with
  alarming frequency, order arises from chaos, and no one is given credit.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT v2 26/29] guilt pop now fails when there are no more patches to pop.

2014-05-13 Thread Jeff Sipek
Signed-off-by: Josef 'Jeff' Sipek jef...@josefsipek.net

On Tue, May 13, 2014 at 10:31:02PM +0200, Per Cederqvist wrote:
 This is analogous to how guilt push now fails when there are no more
 patches to push.  Like push, the --all argument still succeeds even
 if there was no need to pop anything.
 
 Updated the test suite.
 
 Signed-off-by: Per Cederqvist ced...@opera.com
 ---
  guilt-pop| 17 +++--
  regression/t-021.out |  2 ++
  regression/t-021.sh  |  6 ++
  regression/t-061.sh  |  6 +-
  4 files changed, 24 insertions(+), 7 deletions(-)
 
 diff --git a/guilt-pop b/guilt-pop
 index f0e647f..191313e 100755
 --- a/guilt-pop
 +++ b/guilt-pop
 @@ -49,9 +49,19 @@ fi
  patch=$1
  [ ! -z $all ]  patch=-a
  
 +# Treat guilt pop as guilt pop -n 1.
 +if [ -z $patch ]; then
 + patch=1
 + num=t
 +fi
 +
  if [ ! -s $applied ]; then
   disp No patches applied.
 - exit 0
 + if [ $patch = -a ]; then
 + exit 0
 + else
 + exit 1
 + fi
  elif [ $patch = -a ]; then
   # we are supposed to pop all patches
  
 @@ -68,11 +78,6 @@ elif [ ! -z $num ]; then
   # catch underflow
   [ $eidx -lt 0 ]  eidx=0
   [ $eidx -eq $sidx ]  die No patches requested to be removed.
 -elif [ -z $patch ]; then
 - # we are supposed to pop only the current patch on the stack
 -
 - sidx=`wc -l  $applied`
 - eidx=`expr $sidx - 1`
  else
   # we're supposed to pop only up to a patch, make sure the patch is
   # in the series
 diff --git a/regression/t-021.out b/regression/t-021.out
 index 9b42d9c..58be12f 100644
 --- a/regression/t-021.out
 +++ b/regression/t-021.out
 @@ -287,6 +287,8 @@ index 000..8baef1b
  +++ b/def
  @@ -0,0 +1 @@
  +abc
 +% guilt pop
 +No patches applied.
  % guilt push --all
  Applying patch..modify
  Patch applied.
 diff --git a/regression/t-021.sh b/regression/t-021.sh
 index 614e870..e0d2dc1 100755
 --- a/regression/t-021.sh
 +++ b/regression/t-021.sh
 @@ -23,6 +23,12 @@ guilt series | _tac | while read n ; do
  done
  
  #
 +# pop when there is nothing to pop
 +#
 +
 +shouldfail guilt pop
 +
 +#
  # push all
  #
  cmd guilt push --all
 diff --git a/regression/t-061.sh b/regression/t-061.sh
 index 1411baa..6192f1b 100755
 --- a/regression/t-061.sh
 +++ b/regression/t-061.sh
 @@ -48,7 +48,11 @@ cmd list_files
  
  for i in `seq 5`
  do
 - cmd guilt pop
 + if [ $i -ge 5 ]; then
 + shouldfail guilt pop
 + else
 + cmd guilt pop
 + fi
   cmd git for-each-ref
   cmd guilt push
   cmd git for-each-ref
 -- 
 1.8.3.1
 

-- 
Linux, n.:
  Generous programmers from around the world all join forces to help
  you shoot yourself in the foot for free. 
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT 25/28] guilt push now fails when there are no more patches to push.

2014-05-08 Thread Per Cederqvist
On Thu, May 8, 2014 at 12:04 AM, Jeff Sipek jef...@josefsipek.net wrote:
 On Fri, Mar 21, 2014 at 08:32:03AM +0100, Per Cederqvist wrote:
 This makes it easier to script operations on the entire queue, for
 example run the test suite on each patch in the queue:

 guilt pop -a;while guilt push; do make test||break; done

 This brings guilt push in line with the push operation in Mercurial
 Queues (hg qpush), which fails when there are no patches to apply.

 Updated the test suite.

 guilt push -a still does not fail.  (It successfully manages to
 ensure that all patches are pushed, even if it did not have to do
 anything to make it so.)

 Signed-off-by: Per Cederqvist ced...@opera.com
 ---
  guilt-push   | 14 -
  regression/t-020.out | 89 
 
  regression/t-020.sh  | 13 +++-
  3 files changed, 108 insertions(+), 8 deletions(-)

 diff --git a/guilt-push b/guilt-push
 index 67687e7..350 100755
 --- a/guilt-push
 +++ b/guilt-push
 @@ -55,6 +55,7 @@ fi

  patch=$1
  [ ! -z $all ]  patch=-a
 +[ -z $patch ]  { patch=1; num=t; }

 I don't think there's any other place in the repo that does this.  Instead
 you see a lot of if-then-fi.  To keep it consistent, I'd suggest:

 if [ -z $patch ] ; then
 patch=1
 num=t
 fi

Ok.

 Ah, this took me a while to figure out.  The above turns:

 $ guilt push

 into

 $ guilt push -n 1

 I'd throw in a comment.

Will do.

 (Note to self, this file is a huge mess and could use a bit of cleanup.)

 @@ -78,11 +79,6 @@ elif [ ! -z $num ]; then
   # clamp to minimum
   [ $tidx -lt $eidx ]  eidx=$tidx

 -elif [ -z $patch ]; then
 - # we are supposed to push only the next patch onto the stack
 -
 - eidx=`wc -l  $applied`
 - eidx=`expr $eidx + 1`
  else
   # we're supposed to push only up to a patch, make sure the patch is
   # in the series
 @@ -109,7 +105,11 @@ if [ $sidx -gt $eidx ]; then
   else
   disp File series fully applied, ends at patch `get_series | 
 tail -n 1`
   fi
 - exit 0
 + if [ -n $all ]; then
 + exit 0
 + else
 + exit 1
 + fi

 This changes the output on stdout.  E.g.,

 $ guilt pu
 $ guilt pu -n 1
 File series fully applied, ends at patch crashdump

 With this patch, both will print the message. Right?

Yes. Personally, I think that is a good change. It feels
strange that guilt push silently does nothing when
there is no patch to apply.

/ceder

  fi

  get_series | sed -n -e ${sidx},${eidx}p | while read p

 Jeff.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GUILT 25/28] guilt push now fails when there are no more patches to push.

2014-05-07 Thread Jeff Sipek
On Fri, Mar 21, 2014 at 08:32:03AM +0100, Per Cederqvist wrote:
 This makes it easier to script operations on the entire queue, for
 example run the test suite on each patch in the queue:
 
 guilt pop -a;while guilt push; do make test||break; done
 
 This brings guilt push in line with the push operation in Mercurial
 Queues (hg qpush), which fails when there are no patches to apply.
 
 Updated the test suite.
 
 guilt push -a still does not fail.  (It successfully manages to
 ensure that all patches are pushed, even if it did not have to do
 anything to make it so.)
 
 Signed-off-by: Per Cederqvist ced...@opera.com
 ---
  guilt-push   | 14 -
  regression/t-020.out | 89 
 
  regression/t-020.sh  | 13 +++-
  3 files changed, 108 insertions(+), 8 deletions(-)
 
 diff --git a/guilt-push b/guilt-push
 index 67687e7..350 100755
 --- a/guilt-push
 +++ b/guilt-push
 @@ -55,6 +55,7 @@ fi
  
  patch=$1
  [ ! -z $all ]  patch=-a
 +[ -z $patch ]  { patch=1; num=t; }

I don't think there's any other place in the repo that does this.  Instead
you see a lot of if-then-fi.  To keep it consistent, I'd suggest:

if [ -z $patch ] ; then
patch=1
num=t
fi

Ah, this took me a while to figure out.  The above turns:

$ guilt push

into 

$ guilt push -n 1

I'd throw in a comment.

(Note to self, this file is a huge mess and could use a bit of cleanup.)

 @@ -78,11 +79,6 @@ elif [ ! -z $num ]; then
   # clamp to minimum
   [ $tidx -lt $eidx ]  eidx=$tidx
  
 -elif [ -z $patch ]; then
 - # we are supposed to push only the next patch onto the stack
 -
 - eidx=`wc -l  $applied`
 - eidx=`expr $eidx + 1`
  else
   # we're supposed to push only up to a patch, make sure the patch is
   # in the series
 @@ -109,7 +105,11 @@ if [ $sidx -gt $eidx ]; then
   else
   disp File series fully applied, ends at patch `get_series | 
 tail -n 1`
   fi
 - exit 0
 + if [ -n $all ]; then
 + exit 0
 + else
 + exit 1
 + fi

This changes the output on stdout.  E.g.,

$ guilt pu
$ guilt pu -n 1
File series fully applied, ends at patch crashdump

With this patch, both will print the message. Right?

  fi
  
  get_series | sed -n -e ${sidx},${eidx}p | while read p

Jeff.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GUILT 26/28] guilt pop now fails when there are no more patches to pop.

2014-03-21 Thread Per Cederqvist
This is analogous to how guilt push now fails when there are no more
patches to push.  Like push, the --all argument still succeeds even
if there was no need to pop anything.

Updated the test suite.

Signed-off-by: Per Cederqvist ced...@opera.com
---
 guilt-pop| 13 +++--
 regression/t-021.out |  2 ++
 regression/t-021.sh  |  6 ++
 regression/t-061.sh  |  7 ++-
 4 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/guilt-pop b/guilt-pop
index f0e647f..208f868 100755
--- a/guilt-pop
+++ b/guilt-pop
@@ -48,10 +48,16 @@ fi
 
 patch=$1
 [ ! -z $all ]  patch=-a
+[ -z $patch ]  { patch=1; num=t; }
 
 if [ ! -s $applied ]; then
disp No patches applied.
-   exit 0
+   if [ $patch = -a ]
+   then
+   exit 0
+   else
+   exit 1
+   fi
 elif [ $patch = -a ]; then
# we are supposed to pop all patches
 
@@ -68,11 +74,6 @@ elif [ ! -z $num ]; then
# catch underflow
[ $eidx -lt 0 ]  eidx=0
[ $eidx -eq $sidx ]  die No patches requested to be removed.
-elif [ -z $patch ]; then
-   # we are supposed to pop only the current patch on the stack
-
-   sidx=`wc -l  $applied`
-   eidx=`expr $sidx - 1`
 else
# we're supposed to pop only up to a patch, make sure the patch is
# in the series
diff --git a/regression/t-021.out b/regression/t-021.out
index 9b42d9c..58be12f 100644
--- a/regression/t-021.out
+++ b/regression/t-021.out
@@ -287,6 +287,8 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt pop
+No patches applied.
 % guilt push --all
 Applying patch..modify
 Patch applied.
diff --git a/regression/t-021.sh b/regression/t-021.sh
index 614e870..e0d2dc1 100755
--- a/regression/t-021.sh
+++ b/regression/t-021.sh
@@ -23,6 +23,12 @@ guilt series | _tac | while read n ; do
 done
 
 #
+# pop when there is nothing to pop
+#
+
+shouldfail guilt pop
+
+#
 # push all
 #
 cmd guilt push --all
diff --git a/regression/t-061.sh b/regression/t-061.sh
index 1411baa..a9a4fea 100755
--- a/regression/t-061.sh
+++ b/regression/t-061.sh
@@ -48,7 +48,12 @@ cmd list_files
 
 for i in `seq 5`
 do
-   cmd guilt pop
+   if [ $i -ge 5 ]
+   then
+   shouldfail guilt pop
+   else
+   cmd guilt pop
+   fi
cmd git for-each-ref
cmd guilt push
cmd git for-each-ref
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GUILT 25/28] guilt push now fails when there are no more patches to push.

2014-03-21 Thread Per Cederqvist
This makes it easier to script operations on the entire queue, for
example run the test suite on each patch in the queue:

guilt pop -a;while guilt push; do make test||break; done

This brings guilt push in line with the push operation in Mercurial
Queues (hg qpush), which fails when there are no patches to apply.

Updated the test suite.

guilt push -a still does not fail.  (It successfully manages to
ensure that all patches are pushed, even if it did not have to do
anything to make it so.)

Signed-off-by: Per Cederqvist ced...@opera.com
---
 guilt-push   | 14 -
 regression/t-020.out | 89 
 regression/t-020.sh  | 13 +++-
 3 files changed, 108 insertions(+), 8 deletions(-)

diff --git a/guilt-push b/guilt-push
index 67687e7..350 100755
--- a/guilt-push
+++ b/guilt-push
@@ -55,6 +55,7 @@ fi
 
 patch=$1
 [ ! -z $all ]  patch=-a
+[ -z $patch ]  { patch=1; num=t; }
 
 if [ $patch = -a ]; then
# we are supposed to push all patches, get the last one out of
@@ -65,7 +66,7 @@ if [ $patch = -a ]; then
die There are no patches to push.
fi
 elif [ ! -z $num ]; then
-   # we are supposed to pop a set number of patches
+   # we are supposed to push a set number of patches
 
[ $patch -lt 0 ]  die Invalid number of patches to push.
 
@@ -78,11 +79,6 @@ elif [ ! -z $num ]; then
# clamp to minimum
[ $tidx -lt $eidx ]  eidx=$tidx
 
-elif [ -z $patch ]; then
-   # we are supposed to push only the next patch onto the stack
-
-   eidx=`wc -l  $applied`
-   eidx=`expr $eidx + 1`
 else
# we're supposed to push only up to a patch, make sure the patch is
# in the series
@@ -109,7 +105,11 @@ if [ $sidx -gt $eidx ]; then
else
disp File series fully applied, ends at patch `get_series | 
tail -n 1`
fi
-   exit 0
+   if [ -n $all ]; then
+   exit 0
+   else
+   exit 1
+   fi
 fi
 
 get_series | sed -n -e ${sidx},${eidx}p | while read p
diff --git a/regression/t-020.out b/regression/t-020.out
index 7e07efa..23cb9db 100644
--- a/regression/t-020.out
+++ b/regression/t-020.out
@@ -270,6 +270,95 @@ index 000..8baef1b
 +++ b/def
 @@ -0,0 +1 @@
 +abc
+% guilt push
+File series fully applied, ends at patch mode
+% guilt push -a
+File series fully applied, ends at patch mode
+% list_files
+d .git/patches
+d .git/patches/master
+d .git/refs/patches
+d .git/refs/patches/master
+f 22930c6d1f1938f298a4fca51c57e4b47171db21  .git/patches/master/mode
+f 413390f3906f16f30b054a4fb86c1e014b964504  .git/patches/master/remove
+f 71596bf71b72c2717e1aee378aabefbfa19ab7c8  .git/patches/master/status
+f 9c18cc7abe6b87f18503714a80a677b4094eb457  .git/patches/master/add
+f bacb4aad8a55fe4e7aa58a9ae169990bb764069f  .git/patches/master/series
+f bc9ab2e0f5db99d483961e956e814d963f0309f8  .git/patches/master/modify
+r 33633e7a1aa31972f125878baf7807be57b1672d  .git/refs/patches/master/modify
+r 37d588cc39848368810e88332bd03b083f2ce3ac  .git/refs/patches/master/add
+r ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba  .git/refs/patches/master/mode
+r ffb7faa126a6d91bcdd44a494f76b96dd860b8b9  .git/refs/patches/master/remove
+% git log -p
+commit ccd56089d1b5305a9d35617cb7f6f4b06ffa68ba
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch mode
+
+diff --git a/def b/def
+old mode 100644
+new mode 100755
+
+commit ffb7faa126a6d91bcdd44a494f76b96dd860b8b9
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch remove
+
+diff --git a/abd b/abd
+deleted file mode 100644
+index fd3896d..000
+--- a/abd
 /dev/null
+@@ -1 +0,0 @@
+-‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 37d588cc39848368810e88332bd03b083f2ce3ac
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch add
+
+diff --git a/abd b/abd
+new file mode 100644
+index 000..fd3896d
+--- /dev/null
 b/abd
+@@ -0,0 +1 @@
++‰öuؽáZâñeÏÈE„£WÀV¼/›U?Ú|¢@6¤8'H¸1G_˜Í§*·ðRҙ¤
ªÂ~·
+\ No newline at end of file
+
+commit 33633e7a1aa31972f125878baf7807be57b1672d
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+patch modify
+
+diff --git a/def b/def
+index 8baef1b..7d69c2f 100644
+--- a/def
 b/def
+@@ -1 +1,2 @@
+ abc
++asjhfksad
+
+commit d4850419ccc1146c7169f500725ce504b9774ed0
+Author: Author Name author@email
+Date:   Mon Jan 1 00:00:00 2007 +
+
+initial
+
+Signed-off-by: Commiter Name commiter@email
+
+diff --git a/def b/def
+new file mode 100644
+index 000..8baef1b
+--- /dev/null
 b/def
+@@ -0,0 +1 @@
++abc
 % guilt pop --all
 All patches popped.
 % guilt push
diff --git a/regression/t-020.sh b/regression/t-020.sh
index 906aec6..0f9f85d 100755
--- a/regression/t-020.sh
+++ b/regression/t-020.sh
@@ -26,6 +26,17 @@ guilt series | while read n ; do
 done
 
 #

More patches

2005-04-18 Thread Daniel Barkalow
Here are the things I was saving for after the previous set:

 1: Report the actual contents of trees
 2: Add functions for scanning history by date
 3: Add http-pull, a program to fetch the objects you need by HTTP
 4: Change merge-base to find the most recent common ancestor

1 and 2 are core extensions. 3 might be best for the pasky tree. 4 is
mostly a demo of 2 and because Linus thought it was a better algorithm.

-Daniel
*This .sig left intentionally blank*

-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html