* [PATCH] cogito: Add cg-undo command
@ 2005-05-03 17:06 Matt Porter
2005-05-03 21:32 ` Petr Baudis
0 siblings, 1 reply; 4+ messages in thread
From: Matt Porter @ 2005-05-03 17:06 UTC (permalink / raw)
To: Petr Baudis; +Cc: git
Adds a cg-undo command which takes a commit ID and resets HEAD
to the parent of the commit ID...refreshing the tree. This undoes
a single commit or a series of commits.
Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
--- a1aff2a6748c0c0d08058c7d74503e724abc5d03/Makefile (mode:100644 sha1:6ae0afa0208a8f755d383281a6d049a4ef90fe63)
+++ 023d9a7929d2f933d8e008f1679f13a58f7b1229/Makefile (mode:100644 sha1:6c282aeebe86ecee9e634481b3d51fd53a582791)
@@ -47,7 +47,7 @@
cg-add cg-admin-lsobj cg-cancel cg-clone cg-commit cg-diff \
cg-export cg-help cg-init cg-log cg-ls cg-merge cg-mkpatch \
cg-patch cg-pull cg-branch-add cg-branch-ls cg-rm cg-seek cg-status \
- cg-tag cg-tag-ls cg-update cg-Xlib
+ cg-tag cg-tag-ls cg-undo cg-update cg-Xlib
COMMON= read-cache.o
Index: cg-help
===================================================================
--- a1aff2a6748c0c0d08058c7d74503e724abc5d03/cg-help (mode:100755 sha1:1f5d2d79b67490d44ce0f575ff9a4b80134ea47f)
+++ 023d9a7929d2f933d8e008f1679f13a58f7b1229/cg-help (mode:100755 sha1:c7dc8f3e03895374cd0dae544570a37a459c2466)
@@ -43,6 +43,7 @@
cg-status
cg-tag TNAME [COMMIT_ID]
cg-tag-ls
+ cg-undo [COMMIT_ID]
cg-update [BNAME]
cg-version
Index: cg-undo
===================================================================
--- /dev/null (tree:a1aff2a6748c0c0d08058c7d74503e724abc5d03)
+++ 023d9a7929d2f933d8e008f1679f13a58f7b1229/cg-undo (mode:100755 sha1:7fd6d89158fb5aeee42aa05a93f2c81884d9bd34)
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+#
+# Undo a commit or a series of commits
+# Copyright (C) Matt Porter, 2005
+#
+# Takes a commit ID which is the earliest commit to be
+# removed from the repository.
+
+. cg-Xlib
+
+PARENT=`git-cat-file commit $1 | grep parent | cut -f 2 -d " "`
+echo "Undo from $1 to current HEAD"
+echo "Reset HEAD to $PARENT"
+echo "$PARENT" > .git/HEAD
+git-read-tree -m "$PARENT" || {
+ echo >&2 "$PARENT: bad commit"
+ exit 1
+}
+git-checkout-cache -f -a
+git-update-cache --refresh
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] cogito: Add cg-undo command
2005-05-03 17:06 [PATCH] cogito: Add cg-undo command Matt Porter
@ 2005-05-03 21:32 ` Petr Baudis
2005-05-04 5:40 ` Matt Porter
0 siblings, 1 reply; 4+ messages in thread
From: Petr Baudis @ 2005-05-03 21:32 UTC (permalink / raw)
To: Matt Porter; +Cc: git
Dear diary, on Tue, May 03, 2005 at 07:06:25PM CEST, I got a letter
where Matt Porter <mporter@kernel.crashing.org> told me that...
> Index: cg-help
> ===================================================================
> --- a1aff2a6748c0c0d08058c7d74503e724abc5d03/cg-help (mode:100755 sha1:1f5d2d79b67490d44ce0f575ff9a4b80134ea47f)
> +++ 023d9a7929d2f933d8e008f1679f13a58f7b1229/cg-help (mode:100755 sha1:c7dc8f3e03895374cd0dae544570a37a459c2466)
> @@ -43,6 +43,7 @@
> cg-status
> cg-tag TNAME [COMMIT_ID]
> cg-tag-ls
> + cg-undo [COMMIT_ID]
It doesn't seem very optional now.
> cg-update [BNAME]
> cg-version
>
> Index: cg-undo
> ===================================================================
> --- /dev/null (tree:a1aff2a6748c0c0d08058c7d74503e724abc5d03)
> +++ 023d9a7929d2f933d8e008f1679f13a58f7b1229/cg-undo (mode:100755 sha1:7fd6d89158fb5aeee42aa05a93f2c81884d9bd34)
> @@ -0,0 +1,20 @@
> +#!/usr/bin/env bash
> +#
> +# Undo a commit or a series of commits
> +# Copyright (C) Matt Porter, 2005
> +#
> +# Takes a commit ID which is the earliest commit to be
> +# removed from the repository.
> +
> +. cg-Xlib
> +
> +PARENT=`git-cat-file commit $1 | grep parent | cut -f 2 -d " "`
What's wrong with parent-id?
> +echo "Undo from $1 to current HEAD"
> +echo "Reset HEAD to $PARENT"
You talk way too much, I think. I'd just do
echo "Rewinding $HEAD -> $PARENT" >&2
> +echo "$PARENT" > .git/HEAD
> +git-read-tree -m "$PARENT" || {
> + echo >&2 "$PARENT: bad commit"
> + exit 1
> +}
> +git-checkout-cache -f -a
> +git-update-cache --refresh
You really don't want to do this if the tree has any local
modifications.
Please make sure the commit you are rewinding to is an ancestor of your
current HEAD (there should be something like separate cg-branch-rm for
killing enemy branches).
--
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] 4+ messages in thread
* Re: [PATCH] cogito: Add cg-undo command
2005-05-03 21:32 ` Petr Baudis
@ 2005-05-04 5:40 ` Matt Porter
2005-05-08 20:59 ` Petr Baudis
0 siblings, 1 reply; 4+ messages in thread
From: Matt Porter @ 2005-05-04 5:40 UTC (permalink / raw)
To: Petr Baudis; +Cc: git
On Tue, May 03, 2005 at 11:32:04PM +0200, Petr Baudis wrote:
> Dear diary, on Tue, May 03, 2005 at 07:06:25PM CEST, I got a letter
> where Matt Porter <mporter@kernel.crashing.org> told me that...
> > + cg-undo [COMMIT_ID]
>
> It doesn't seem very optional now.
Yep, changed.
> > +PARENT=`git-cat-file commit $1 | grep parent | cut -f 2 -d " "`
>
> What's wrong with parent-id?
Missed it...changed to use parent-id.
> > +echo "Undo from $1 to current HEAD"
> > +echo "Reset HEAD to $PARENT"
>
> You talk way too much, I think. I'd just do
>
> echo "Rewinding $HEAD -> $PARENT" >&2
Done.
> > +git-update-cache --refresh
>
> You really don't want to do this if the tree has any local
> modifications.
Ugh, yes. I added a check for this.
> Please make sure the commit you are rewinding to is an ancestor of your
> current HEAD (there should be something like separate cg-branch-rm for
> killing enemy branches).
Added a check for this as well as verifying we have an argument.
Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
--- aa6233be6d1b8bf42797c409a7c23b50593afc99/Makefile (mode:100644 sha1:6ae0afa0208a8f755d383281a6d049a4ef90fe63)
+++ ce72371d991b15a0ca8db7c2332d215b59b909af/Makefile (mode:100644 sha1:6c282aeebe86ecee9e634481b3d51fd53a582791)
@@ -47,7 +47,7 @@
cg-add cg-admin-lsobj cg-cancel cg-clone cg-commit cg-diff \
cg-export cg-help cg-init cg-log cg-ls cg-merge cg-mkpatch \
cg-patch cg-pull cg-branch-add cg-branch-ls cg-rm cg-seek cg-status \
- cg-tag cg-tag-ls cg-update cg-Xlib
+ cg-tag cg-tag-ls cg-undo cg-update cg-Xlib
COMMON= read-cache.o
Index: cg-help
===================================================================
--- aa6233be6d1b8bf42797c409a7c23b50593afc99/cg-help (mode:100755 sha1:1f5d2d79b67490d44ce0f575ff9a4b80134ea47f)
+++ ce72371d991b15a0ca8db7c2332d215b59b909af/cg-help (mode:100755 sha1:1b75114ee90d2b3b9786fc4f14bf179feef54f87)
@@ -43,6 +43,7 @@
cg-status
cg-tag TNAME [COMMIT_ID]
cg-tag-ls
+ cg-undo COMMIT_ID
cg-update [BNAME]
cg-version
Index: cg-undo
===================================================================
--- /dev/null (tree:aa6233be6d1b8bf42797c409a7c23b50593afc99)
+++ ce72371d991b15a0ca8db7c2332d215b59b909af/cg-undo (mode:100644 sha1:7b1cb04c79731b137d88ebd05ee41553af7246d2)
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+#
+# Undo a commit or a series of commits
+# Copyright (C) Matt Porter, 2005
+#
+# Takes a commit ID which is the earliest commit to be
+# removed from the repository.
+
+. cg-Xlib
+
+[ "$1" ] || die "usage: cg-undo COMMIT_ID"
+
+HEAD=$(commit-id) || exit 1;
+PARENT=$(parent-id "$1") || exit 1;
+
+git-rev-list $HEAD | grep -q $1 || {
+ echo >&2 "$1: not an ancestor of HEAD"
+ exit 1
+}
+[ "$(git-diff-files -s)" ] && git-update-cache --refresh
+if [ "$(git-diff-files -s)" ] || [ "$(git-diff-cache $(tree-id))" ]; then
+ die "Undo blocked: local changes"
+fi
+
+echo "Rewinding HEAD -> $PARENT" >&2
+echo "$PARENT" > .git/HEAD
+git-read-tree -m "$PARENT" || {
+ echo >&2 "$PARENT: bad commit"
+ exit 1
+}
+git-checkout-cache -f -a
+git-update-cache --refresh
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] cogito: Add cg-undo command
2005-05-04 5:40 ` Matt Porter
@ 2005-05-08 20:59 ` Petr Baudis
0 siblings, 0 replies; 4+ messages in thread
From: Petr Baudis @ 2005-05-08 20:59 UTC (permalink / raw)
To: Matt Porter; +Cc: git
Dear diary, on Wed, May 04, 2005 at 07:40:07AM CEST, I got a letter
where Matt Porter <mporter@kernel.crashing.org> told me that...
> Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
Thanks. I took it, hacked upon it for a while and then committed
something similar but largely rewritten as cg-admin-uncommit. ;-)
--
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] 4+ messages in thread
end of thread, other threads:[~2005-05-08 20:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-03 17:06 [PATCH] cogito: Add cg-undo command Matt Porter
2005-05-03 21:32 ` Petr Baudis
2005-05-04 5:40 ` Matt Porter
2005-05-08 20:59 ` 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).