From: Matt Porter <mporter@kernel•crashing.org>
To: Petr Baudis <pasky@ucw•cz>
Cc: git@vger•kernel.org
Subject: Re: [PATCH] cogito: Add cg-undo command
Date: Tue, 3 May 2005 22:40:07 -0700 [thread overview]
Message-ID: <20050503224007.B637@cox.net> (raw)
In-Reply-To: <20050503213204.GC15995@pasky.ji.cz>; from pasky@ucw.cz on Tue, May 03, 2005 at 11:32:04PM +0200
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
next prev parent reply other threads:[~2005-05-04 5:36 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2005-05-08 20:59 ` Petr Baudis
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=20050503224007.B637@cox.net \
--to=mporter@kernel$(echo .)crashing.org \
--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