From: Fabian Ruch <bafain@gmail.com>
To: git@vger.kernel.org
Cc: Michael Haggerty <mhagger@alum.mit.edu>,
Thomas Rast <tr@thomasrast.ch>, Jeff King <peff@peff.net>
Subject: [PATCH v3 07/27] commit: allow disabling pre-commit and commit-msg separately
Date: Mon, 18 Aug 2014 23:22:50 +0200 [thread overview]
Message-ID: <0f321cb359c454217da5ac5a9bfe06907342bdb5.1408396036.git.bafain@gmail.com> (raw)
In-Reply-To: <cover.1408396036.git.bafain@gmail.com>
Introduce the git-commit command line options `--no-pre-commit` and
`--no-commit-msg` to disable the pre-commit and commit-msg hooks,
respectively. Make `--no-verify` a synonym for specifying both at the
same time.
This change is motivated by an internal usage of git-commit in
git-rebase--interactive to disable pre-commit while keeping
commit-msg enabled when rewording a commit.
Make `test_commit` forward unknown options to git-commit instead of
teaching it all possible options. In order to support leading double
dashes in `<message>`, stop interpreting `test_commit` arguments
following a `--` argument as options. This wasn't a problem before
because the first unknown option would be used as `<message>`.
Allow disabling tag creation to avoid name clashes when using
`test_commit` with the same arguments several times from the same
test suite. By default, `test_commit` tags successful commits using
git-tag for easy reference. The `--notag` option skips this step.
Add tests.
Signed-off-by: Fabian Ruch <bafain@gmail.com>
---
Documentation/git-commit.txt | 8 ++++-
builtin/commit.c | 32 ++++++++++++++---
t/t7503-pre-commit-hook.sh | 65 ++++++++++++++++++++++++++++-----
t/t7504-commit-msg-hook.sh | 85 ++++++++++++++++++++++++++++++++++----------
t/test-lib-functions.sh | 23 ++++++++----
5 files changed, 176 insertions(+), 37 deletions(-)
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 0bbc8f5..28a2c5c 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -158,7 +158,7 @@ OPTIONS
-n::
--no-verify::
- This option bypasses the pre-commit and commit-msg hooks.
+ A synonym for `--no-pre-commit --no-commit-msg`.
See also linkgit:githooks[5].
--allow-empty::
@@ -238,6 +238,12 @@ You should understand the implications of rewriting history if you
amend a commit that has already been published. (See the "RECOVERING
FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
+--no-pre-commit::
+ This option bypasses the pre-commit hook.
+
+--no-commit-msg::
+ This option bypasses the commit-msg hook.
+
--no-post-rewrite::
Bypass the post-rewrite hook.
diff --git a/builtin/commit.c b/builtin/commit.c
index 5ed6036..dfd354e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -98,12 +98,27 @@ static char *edit_message, *use_message;
static char *fixup_message, *squash_message;
static int all, also, interactive, patch_interactive, only, amend, signoff;
static int edit_flag = -1; /* unspecified */
-static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship;
+static int quiet, verbose, allow_empty, dry_run, renew_authorship;
static int no_post_rewrite, allow_empty_message;
static char *untracked_files_arg, *force_date, *ignore_submodule_arg;
static char *sign_commit;
/*
+ * The verify variable is interpreted as a bitmap of enabled commit
+ * verification hooks according to the legend below.
+ *
+ * By default, the pre-commit and commit-msg hooks are enabled. This
+ * is represented by both the PRE_COMMIT and COMMIT_MSG bits being
+ * set.
+ *
+ * The bitmap is changed through the command line options
+ * --no-verify, --no-pre-commit and --no-commit-msg.
+ */
+#define PRE_COMMIT (1<<0)
+#define COMMIT_MSG (1<<1)
+static int verify = PRE_COMMIT | COMMIT_MSG;
+
+/*
* The default commit message cleanup mode will remove the lines
* beginning with # (shell comments) and leading and trailing
* whitespaces (empty lines or containing only whitespaces)
@@ -661,7 +676,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
/* This checks and barfs if author is badly specified */
determine_author_info(author_ident);
- if (!no_verify && run_commit_hook(use_editor, index_file, "pre-commit", NULL))
+ if (verify & PRE_COMMIT &&
+ run_commit_hook(use_editor, index_file, "pre-commit", NULL))
return 0;
if (squash_message) {
@@ -962,7 +978,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
}
}
- if (!no_verify &&
+ if (verify & COMMIT_MSG &&
run_commit_hook(use_editor, index_file, "commit-msg", git_path(commit_editmsg), NULL)) {
return 0;
}
@@ -1590,7 +1606,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
OPT_BOOL(0, "interactive", &interactive, N_("interactively add files")),
OPT_BOOL('p', "patch", &patch_interactive, N_("interactively add changes")),
OPT_BOOL('o', "only", &only, N_("commit only specified files")),
- OPT_BOOL('n', "no-verify", &no_verify, N_("bypass pre-commit hook")),
+ OPT_NEGBIT('n', "no-verify", &verify,
+ N_("synonym for --no-pre-commit --no-commit-msg"),
+ PRE_COMMIT | COMMIT_MSG),
OPT_BOOL(0, "dry-run", &dry_run, N_("show what would be committed")),
OPT_SET_INT(0, "short", &status_format, N_("show status concisely"),
STATUS_FORMAT_SHORT),
@@ -1603,6 +1621,12 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
OPT_BOOL('z', "null", &s.null_termination,
N_("terminate entries with NUL")),
OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
+ OPT_NEGBIT(0, "no-pre-commit", &verify,
+ N_("bypass pre-commit hook"),
+ PRE_COMMIT),
+ OPT_NEGBIT(0, "no-commit-msg", &verify,
+ N_("bypass commit-msg hook"),
+ COMMIT_MSG),
OPT_BOOL(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")),
{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
/* end commit contents options */
diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh
index 984889b..db5de1c 100755
--- a/t/t7503-pre-commit-hook.sh
+++ b/t/t7503-pre-commit-hook.sh
@@ -12,11 +12,11 @@ test_expect_success 'with no hook' '
'
-test_expect_success '--no-verify with no hook' '
+test_expect_success '--no-pre-commit with no hook' '
echo "bar" > file &&
git add file &&
- git commit --no-verify -m "bar"
+ git commit --no-pre-commit -m "bar"
'
@@ -38,11 +38,11 @@ test_expect_success 'with succeeding hook' '
'
-test_expect_success '--no-verify with succeeding hook' '
+test_expect_success '--no-pre-commit with succeeding hook' '
echo "even more" >> file &&
git add file &&
- git commit --no-verify -m "even more"
+ git commit --no-pre-commit -m "even more"
'
@@ -60,11 +60,11 @@ test_expect_success 'with failing hook' '
'
-test_expect_success '--no-verify with failing hook' '
+test_expect_success '--no-pre-commit with failing hook' '
echo "stuff" >> file &&
git add file &&
- git commit --no-verify -m "stuff"
+ git commit --no-pre-commit -m "stuff"
'
@@ -77,15 +77,64 @@ test_expect_success POSIXPERM 'with non-executable hook' '
'
-test_expect_success POSIXPERM '--no-verify with non-executable hook' '
+test_expect_success POSIXPERM '--no-pre-commit with non-executable hook' '
echo "more content" >> file &&
git add file &&
- git commit --no-verify -m "more content"
+ git commit --no-pre-commit -m "more content"
'
chmod +x "$HOOK"
+test_hook_enabled () {
+ git checkout --detach master &&
+ output="running failing pre-commit hook with ${*:-(none)}..." &&
+ >actual.output &&
+ cat >"$HOOK" <<-EOF &&
+ #!/bin/sh
+ echo "$output" >>actual.output
+ exit 1
+ EOF
+ chmod +x "$HOOK" &&
+ echo "$output" >expected.output &&
+ test_must_fail test_commit $* file &&
+ test_cmp expected.output actual.output
+}
+
+test_hook_disabled () {
+ git checkout --detach master &&
+ output="running failing pre-commit hook with ${*:-(none)}..." &&
+ >actual.output &&
+ cat >"$HOOK" <<-EOF &&
+ #!/bin/sh
+ echo "$output" >>actual.output
+ exit 1
+ EOF
+ chmod +x "$HOOK" &&
+ test_commit --notag $* file &&
+ test_must_be_empty actual.output
+}
+
+test_expect_success 'command line options combinations' '
+ test_hook_enabled &&
+ test_hook_enabled --pre-commit &&
+ test_hook_enabled --no-pre-commit --pre-commit &&
+ test_hook_enabled --no-verify --pre-commit &&
+ test_hook_enabled --verify &&
+ test_hook_enabled --no-pre-commit --verify &&
+ test_hook_enabled --no-verify --verify &&
+ test_hook_enabled --verify --no-commit-msg &&
+ test_hook_enabled --verify --commit-msg &&
+ test_hook_disabled --no-pre-commit &&
+ test_hook_disabled --pre-commit --no-pre-commit &&
+ test_hook_disabled --pre-commit --no-verify &&
+ test_hook_disabled --no-verify &&
+ test_hook_disabled --verify --no-pre-commit &&
+ test_hook_disabled --verify --no-verify &&
+ test_hook_disabled --no-verify --no-commit-msg &&
+ test_hook_disabled --no-verify --commit-msg
+'
+
# a hook that checks $GIT_PREFIX and succeeds inside the
# success/ subdirectory only
cat > "$HOOK" <<EOF
diff --git a/t/t7504-commit-msg-hook.sh b/t/t7504-commit-msg-hook.sh
index 1f53ea8..59642a3 100755
--- a/t/t7504-commit-msg-hook.sh
+++ b/t/t7504-commit-msg-hook.sh
@@ -34,20 +34,20 @@ test_expect_success 'with no hook (editor)' '
'
-test_expect_success '--no-verify with no hook' '
+test_expect_success '--no-commit-msg with no hook' '
echo "bar" > file &&
git add file &&
- git commit --no-verify -m "bar"
+ git commit --no-commit-msg -m "bar"
'
-test_expect_success '--no-verify with no hook (editor)' '
+test_expect_success '--no-commit-msg with no hook (editor)' '
echo "more bar" > file &&
git add file &&
echo "more bar" > FAKE_MSG &&
- GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
+ GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-commit-msg
'
@@ -78,20 +78,20 @@ test_expect_success 'with succeeding hook (editor)' '
'
-test_expect_success '--no-verify with succeeding hook' '
+test_expect_success '--no-commit-msg with succeeding hook' '
echo "even more" >> file &&
git add file &&
- git commit --no-verify -m "even more"
+ git commit --no-commit-msg -m "even more"
'
-test_expect_success '--no-verify with succeeding hook (editor)' '
+test_expect_success '--no-commit-msg with succeeding hook (editor)' '
echo "even more more" >> file &&
git add file &&
echo "even more more" > FAKE_MSG &&
- GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
+ GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-commit-msg
'
@@ -118,20 +118,20 @@ test_expect_success 'with failing hook (editor)' '
'
-test_expect_success '--no-verify with failing hook' '
+test_expect_success '--no-commit-msg with failing hook' '
echo "stuff" >> file &&
git add file &&
- git commit --no-verify -m "stuff"
+ git commit --no-commit-msg -m "stuff"
'
-test_expect_success '--no-verify with failing hook (editor)' '
+test_expect_success '--no-commit-msg with failing hook (editor)' '
echo "more stuff" >> file &&
git add file &&
echo "more stuff" > FAKE_MSG &&
- GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
+ GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-commit-msg
'
@@ -153,23 +153,72 @@ test_expect_success POSIXPERM 'with non-executable hook (editor)' '
'
-test_expect_success POSIXPERM '--no-verify with non-executable hook' '
+test_expect_success POSIXPERM '--no-commit-msg with non-executable hook' '
echo "more content" >> file &&
git add file &&
- git commit --no-verify -m "more content"
+ git commit --no-commit-msg -m "more content"
'
-test_expect_success POSIXPERM '--no-verify with non-executable hook (editor)' '
+test_expect_success POSIXPERM '--no-commit-msg with non-executable hook (editor)' '
echo "even more content" >> file &&
git add file &&
echo "even more content" > FAKE_MSG &&
- GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify
+ GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-commit-msg
'
+test_hook_enabled () {
+ git checkout --detach master &&
+ output="running failing commit-msg hook with ${*:-(none)}..." &&
+ >actual.output &&
+ cat >"$HOOK" <<-EOF &&
+ #!/bin/sh
+ echo "$output" >>actual.output
+ exit 1
+ EOF
+ chmod +x "$HOOK" &&
+ echo "$output" >expected.output &&
+ test_must_fail test_commit $* file &&
+ test_cmp expected.output actual.output
+}
+
+test_hook_disabled () {
+ git checkout --detach master &&
+ output="running failing commit-msg hook with ${*:-(none)}..." &&
+ >actual.output &&
+ cat >"$HOOK" <<-EOF &&
+ #!/bin/sh
+ echo "$output" >>actual.output
+ exit 1
+ EOF
+ chmod +x "$HOOK" &&
+ test_commit --notag $* file &&
+ test_must_be_empty actual.output
+}
+
+test_expect_success 'command line options combinations' '
+ test_hook_enabled &&
+ test_hook_enabled --commit-msg &&
+ test_hook_enabled --no-commit-msg --commit-msg &&
+ test_hook_enabled --no-verify --commit-msg &&
+ test_hook_enabled --verify &&
+ test_hook_enabled --no-commit-msg --verify &&
+ test_hook_enabled --no-verify --verify &&
+ test_hook_enabled --verify --no-pre-commit &&
+ test_hook_enabled --verify --pre-commit &&
+ test_hook_disabled --no-commit-msg &&
+ test_hook_disabled --commit-msg --no-commit-msg &&
+ test_hook_disabled --commit-msg --no-verify &&
+ test_hook_disabled --no-verify &&
+ test_hook_disabled --verify --no-commit-msg &&
+ test_hook_disabled --verify --no-verify &&
+ test_hook_disabled --no-verify --no-pre-commit &&
+ test_hook_disabled --no-verify --pre-commit
+'
+
# now a hook that edits the commit message
cat > "$HOOK" <<'EOF'
#!/bin/sh
@@ -205,7 +254,7 @@ test_expect_success "hook doesn't edit commit message" '
echo "plus" >> file &&
git add file &&
- git commit --no-verify -m "plus" &&
+ git commit --no-commit-msg -m "plus" &&
commit_msg_is "plus"
'
@@ -215,7 +264,7 @@ test_expect_success "hook doesn't edit commit message (editor)" '
echo "more plus" >> file &&
git add file &&
echo "more plus" > FAKE_MSG &&
- GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-verify &&
+ GIT_EDITOR="\"\$FAKE_EDITOR\"" git commit --no-commit-msg &&
commit_msg_is "more plus"
'
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index dafd6ad..a107073 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -154,20 +154,28 @@ test_pause () {
test_commit () {
notick= &&
- signoff= &&
+ notag= &&
+ commit_opts= &&
while test $# != 0
do
case "$1" in
--notick)
notick=yes
;;
- --signoff)
- signoff="$1"
+ --notag)
+ notag=yes
+ ;;
+ --)
+ shift &&
+ break
+ ;;
+ -*)
+ commit_opts="$commit_opts $1"
;;
*)
break
;;
- esac
+ esac &&
shift
done &&
file=${2:-"$1.t"} &&
@@ -177,8 +185,11 @@ test_commit () {
then
test_tick
fi &&
- git commit $signoff -m "$1" &&
- git tag "${4:-$1}"
+ git commit $commit_opts -m "$1" &&
+ if test -z "$notag"
+ then
+ git tag "${4:-$1}"
+ fi
}
# Call test_merge with the arguments "<message> <commit>", where <commit>
--
2.0.1
next prev parent reply other threads:[~2014-08-18 21:24 UTC|newest]
Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-19 3:28 [RFC PATCH 0/7] rebase -i: Implement `reword` and `squash` in terms of `do_pick` Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 00/19] Enable options --signoff, --reset-author for pick, reword Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 01/19] rebase -i: Failed reword prints redundant error message Fabian Ruch
2014-07-08 20:31 ` Junio C Hamano
2014-07-10 14:30 ` Andrew Wong
2014-07-10 16:35 ` Fabian Ruch
2014-07-10 17:04 ` Andrew Wong
2014-07-02 17:47 ` [PATCH RFC v2 02/19] rebase -i: reword complains about empty commit despite --keep-empty Fabian Ruch
2014-07-08 20:37 ` Junio C Hamano
2014-07-09 18:02 ` Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 03/19] rebase -i: reword executes pre-commit hook on interim commit Fabian Ruch
2014-07-08 20:43 ` Junio C Hamano
2014-07-13 11:00 ` Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 04/19] rebase -i: Teach do_pick the option --edit Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 05/19] rebase -i: Implement reword in terms of do_pick Fabian Ruch
2014-08-04 15:16 ` Matthieu Moy
2014-08-04 15:45 ` Fabian Ruch
2014-07-02 17:47 ` [PATCH RFC v2 06/19] rebase -i: Stop on root commits with empty log messages Fabian Ruch
2014-07-08 22:26 ` Junio C Hamano
2014-07-10 9:29 ` Fabian Ruch
2014-07-10 16:57 ` Junio C Hamano
2014-07-10 17:33 ` Junio C Hamano
2014-07-02 17:47 ` [PATCH RFC v2 07/19] rebase -i: The replay of root commits is not shown with --verbose Fabian Ruch
2014-07-08 22:29 ` Junio C Hamano
2014-07-11 13:46 ` Fabian Ruch
2014-07-15 9:29 ` Chris Webb
2014-07-02 17:48 ` [PATCH RFC v2 08/19] rebase -i: Root commits are replayed with an unnecessary option Fabian Ruch
2014-07-08 22:32 ` Junio C Hamano
2014-07-18 9:16 ` Fabian Ruch
2014-07-18 16:52 ` Junio C Hamano
2014-07-19 18:14 ` Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 09/19] rebase -i: Commit only once when rewriting picks Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 10/19] rebase -i: Do not die in do_pick Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 11/19] rebase -i: Teach do_pick the option --amend Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 12/19] rebase -i: Teach do_pick the option --file Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 13/19] rebase -i: Prepare for squash in terms of do_pick --amend Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 14/19] rebase -i: Implement squash in terms of do_pick Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 15/19] rebase -i: Explicitly distinguish replay commands and exec tasks Fabian Ruch
2014-07-10 20:03 ` Junio C Hamano
2014-07-02 17:48 ` [PATCH RFC v2 16/19] rebase -i: Parse to-do list command line options Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 17/19] rebase -i: Teach do_pick the option --reset-author Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 18/19] rebase -i: Teach do_pick the option --signoff Fabian Ruch
2014-07-02 17:48 ` [PATCH RFC v2 19/19] rebase -i: Enable options --signoff, --reset-author for pick, reword Fabian Ruch
2014-07-03 10:33 ` [PATCH RFC v2 00/19] " Michael Haggerty
2014-07-08 20:45 ` Junio C Hamano
2014-07-09 16:08 ` Fabian Ruch
2014-07-18 12:10 ` Thomas Rast
2014-07-28 23:18 ` [PATCH v1 " Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 01/19] rebase -i: failed reword prints redundant error message Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 02/19] rebase -i: allow rewording an empty commit without complaints Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 03/19] rebase -i: reword executes pre-commit hook on interim commit Fabian Ruch
2014-08-01 23:47 ` Jeff King
2014-08-04 18:51 ` Fabian Ruch
2014-08-06 21:46 ` Jeff King
2014-07-28 23:18 ` [PATCH v1 04/19] rebase -i: teach do_pick the option --edit Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 05/19] rebase -i: implement reword in terms of do_pick Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 06/19] rebase -i: allow replaying commits with empty log messages Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 07/19] rebase -i: log the replay of root commits Fabian Ruch
2014-08-02 0:04 ` Jeff King
2014-08-04 21:21 ` Fabian Ruch
2014-08-06 22:01 ` Jeff King
2014-07-28 23:18 ` [PATCH v1 08/19] rebase -i: root commits are replayed with an unnecessary option Fabian Ruch
2014-08-02 0:13 ` Jeff King
2014-08-04 21:31 ` Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 09/19] rebase -i: commit only once when rewriting picks Fabian Ruch
2014-08-02 0:22 ` Jeff King
2014-08-07 0:24 ` Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 10/19] rebase -i: do not die in do_pick Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 11/19] rebase -i: teach do_pick the option --amend Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 12/19] rebase -i: teach do_pick the option --file Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 13/19] rebase -i: prepare for squash in terms of do_pick --amend Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 14/19] rebase -i: implement squash in terms of do_pick Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 15/19] rebase -i: explicitly distinguish replay commands and exec tasks Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 16/19] rebase -i: parse to-do list command line options Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 17/19] rebase -i: teach do_pick the option --reset-author Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 18/19] rebase -i: teach do_pick the option --signoff Fabian Ruch
2014-07-28 23:18 ` [PATCH v1 19/19] rebase -i: enable options --signoff, --reset-author for pick, reword Fabian Ruch
2014-08-02 13:52 ` [PATCH v1 00/19] Enable " Jeff King
2014-08-04 8:37 ` Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 00/23] " Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 01/23] rebase -i: allow replaying commits with empty log messages Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 02/23] rebase -i: allow squashing empty commits without complaints Fabian Ruch
2014-08-07 7:16 ` Peter Krefting
2014-08-07 22:03 ` Eric Sunshine
2014-08-11 7:01 ` Fabian Ruch
2014-08-13 19:24 ` Phil Hord
2014-08-06 23:59 ` [PATCH v2 03/23] rebase -i: allow rewording " Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 04/23] rebase -i: hide interactive command messages in verbose mode Fabian Ruch
2014-08-08 19:09 ` Thomas Rast
2014-08-11 8:26 ` Fabian Ruch
2014-08-11 18:22 ` Thomas Rast
2014-08-06 23:59 ` [PATCH v2 05/23] rebase -i: failed reword prints redundant error message Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 06/23] commit: allow disabling pre-commit and commit-msg separately Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 07/23] rebase -i: squash skips commit-msg hook Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 08/23] rebase -i: reword executes pre-commit hook on interim commit Fabian Ruch
2014-08-08 19:09 ` Thomas Rast
2014-08-11 8:45 ` Fabian Ruch
2014-08-11 18:22 ` Thomas Rast
2014-08-06 23:59 ` [PATCH v2 09/23] rebase -i: teach do_pick the option --edit Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 10/23] rebase -i: implement reword in terms of do_pick Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 11/23] rebase -i: log the replay of root commits Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 12/23] rebase -i: root commits are replayed with an unnecessary option Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 13/23] rebase -i: commit only once when rewriting picks Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 14/23] rebase -i: do not die in do_pick Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 15/23] rebase -i: teach do_pick the option --amend Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 16/23] rebase -i: teach do_pick the option --file Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 17/23] rebase -i: prepare for squash in terms of do_pick --amend Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 18/23] rebase -i: implement squash in terms of do_pick Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 19/23] rebase -i: explicitly distinguish replay commands and exec tasks Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 20/23] rebase -i: parse to-do list command line options Fabian Ruch
2014-08-08 19:10 ` Thomas Rast
2014-08-11 20:56 ` Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 21/23] rebase -i: teach do_pick the option --reset-author Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 22/23] rebase -i: teach do_pick the option --signoff Fabian Ruch
2014-08-06 23:59 ` [PATCH v2 23/23] rebase -i: enable options --signoff, --reset-author for pick, reword Fabian Ruch
2014-08-08 19:10 ` Thomas Rast
2014-08-12 21:04 ` Fabian Ruch
2014-08-13 12:47 ` Michael Haggerty
2014-08-14 17:24 ` Fabian Ruch
2014-09-21 16:59 ` Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 00/27] Enable options --signoff, --reset-author for pick, reword, edit Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 01/27] rebase -i: allow replaying commits with empty log messages Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 02/27] rebase -i: allow squashing empty commits without complaints Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 03/27] rebase -i: allow rewording " Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 04/27] fake_editor: leave standard output unchanged Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 05/27] rebase -i: hide interactive command messages in verbose mode Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 06/27] rebase -i: discard redundant message when rewording fails Fabian Ruch
2014-08-18 21:22 ` Fabian Ruch [this message]
2014-08-18 21:22 ` [PATCH v3 08/27] rebase -i: verify squash messages using commit-msg Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 09/27] rebase -i: do not verify reworded patches using pre-commit Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 10/27] rebase -i: teach do_pick the option --edit Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 11/27] rebase -i: implement reword in terms of do_pick Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 12/27] rebase -i: log the replay of root commits Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 13/27] rebase -i: do not use -C when --no-edit is sufficient Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 14/27] rebase -i: commit only once when rewriting picks Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 15/27] rebase -i: do not die in do_pick Fabian Ruch
2014-08-18 21:22 ` [PATCH v3 16/27] rebase -i: teach do_pick the option --amend Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 17/27] rebase -i: teach do_pick the option --file Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 18/27] rebase -i: remove no-op do_with_author git commit --amend Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 19/27] rebase -i: prepare for squash in terms of do_pick --amend Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 20/27] rebase -i: implement squash in terms of do_pick Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 21/27] rebase -i: explicitly distinguish replay commands and exec tasks Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 22/27] rebase -i: parse to-do list command line options Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 23/27] rebase -i: teach do_pick the option --reset-author Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 24/27] rebase -i: teach do_pick the option --signoff Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 25/27] rebase -i: do not overwrite user author information Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 26/27] rebase -i: refuse to commit when resuming with updated head Fabian Ruch
2014-08-18 21:23 ` [PATCH v3 27/27] rebase -i: enable --signoff, --reset-author for pick, reword, edit Fabian Ruch
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0f321cb359c454217da5ac5a9bfe06907342bdb5.1408396036.git.bafain@gmail.com \
--to=bafain@gmail.com \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
--cc=peff@peff.net \
--cc=tr@thomasrast.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).