From: Felipe Contreras <felipe.contreras@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Ramkumar Ramachandra <artagnon@gmail.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>,
Martin von Zweigbergk <martinvonz@gmail.com>
Subject: [PATCH v4 42/45] add tests for rebasing merged history
Date: Sun, 9 Jun 2013 11:40:54 -0500 [thread overview]
Message-ID: <1370796057-25312-43-git-send-email-felipe.contreras@gmail.com> (raw)
In-Reply-To: <1370796057-25312-1-git-send-email-felipe.contreras@gmail.com>
From: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/t3400-rebase.sh | 31 +----
t/t3401-rebase-partial.sh | 45 -------
t/t3404-rebase-interactive.sh | 10 +-
t/t3409-rebase-preserve-merges.sh | 53 --------
t/t3425-rebase-topology-merges.sh | 258 ++++++++++++++++++++++++++++++++++++++
5 files changed, 260 insertions(+), 137 deletions(-)
delete mode 100755 t/t3401-rebase-partial.sh
create mode 100755 t/t3425-rebase-topology-merges.sh
diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh
index b58fa1a..b436ef4 100755
--- a/t/t3400-rebase.sh
+++ b/t/t3400-rebase.sh
@@ -40,13 +40,6 @@ test_expect_success 'prepare repository with topic branches' '
echo Side >>C &&
git add C &&
git commit -m "Add C" &&
- git checkout -b nonlinear my-topic-branch &&
- echo Edit >>B &&
- git add B &&
- git commit -m "Modify B" &&
- git merge side &&
- git checkout -b upstream-merged-nonlinear &&
- git merge master &&
git checkout -f my-topic-branch &&
git tag topic
'
@@ -106,31 +99,9 @@ test_expect_success 'rebase from ambiguous branch name' '
git rebase master
'
-test_expect_success 'rebase after merge master' '
- git checkout --detach refs/tags/topic &&
- git branch -D topic &&
- git reset --hard topic &&
- git merge master &&
- git rebase master &&
- ! (git show | grep "^Merge:")
-'
-
-test_expect_success 'rebase of history with merges is linearized' '
- git checkout nonlinear &&
- test 4 = $(git rev-list master.. | wc -l) &&
- git rebase master &&
- test 3 = $(git rev-list master.. | wc -l)
-'
-
-test_expect_success 'rebase of history with merges after upstream merge is linearized' '
- git checkout upstream-merged-nonlinear &&
- test 5 = $(git rev-list master.. | wc -l) &&
- git rebase master &&
- test 3 = $(git rev-list master.. | wc -l)
-'
-
test_expect_success 'rebase a single mode change' '
git checkout master &&
+ git branch -D topic &&
echo 1 >X &&
git add X &&
test_tick &&
diff --git a/t/t3401-rebase-partial.sh b/t/t3401-rebase-partial.sh
deleted file mode 100755
index 7ba1797..0000000
--- a/t/t3401-rebase-partial.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2006 Yann Dirson, based on t3400 by Amos Waterland
-#
-
-test_description='git rebase should detect patches integrated upstream
-
-This test cherry-picks one local change of two into master branch, and
-checks that git rebase succeeds with only the second patch in the
-local branch.
-'
-. ./test-lib.sh
-
-test_expect_success 'prepare repository with topic branch' '
- test_commit A &&
- git checkout -b my-topic-branch &&
- test_commit B &&
- test_commit C &&
- git checkout -f master &&
- test_commit A2 A.t
-'
-
-test_expect_success 'pick top patch from topic branch into master' '
- git cherry-pick C &&
- git checkout -f my-topic-branch
-'
-
-test_debug '
- git cherry master &&
- git format-patch -k --stdout --full-index master >/dev/null &&
- gitk --all & sleep 1
-'
-
-test_expect_success 'rebase topic branch against new master and check git am did not get halted' '
- git rebase master &&
- test_path_is_missing .git/rebase-apply
-'
-
-test_expect_success 'rebase --merge topic branch that was partially merged upstream' '
- git reset --hard C &&
- git rebase --merge master &&
- test_path_is_missing .git/rebase-merge
-'
-
-test_done
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 79e8d3c..0d3c573 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -477,19 +477,11 @@ test_expect_success 'interrupted squash works as expected (case 2)' '
test $one = $(git rev-parse HEAD~2)
'
-test_expect_success 'ignore patch if in upstream' '
- HEAD=$(git rev-parse HEAD) &&
- git checkout -b has-cherry-picked HEAD^ &&
+test_expect_success '--continue tries to commit, even for "edit"' '
echo unrelated > file7 &&
git add file7 &&
test_tick &&
git commit -m "unrelated change" &&
- git cherry-pick $HEAD &&
- EXPECT_COUNT=1 git rebase -i $HEAD &&
- test $HEAD = $(git rev-parse HEAD^)
-'
-
-test_expect_success '--continue tries to commit, even for "edit"' '
parent=$(git rev-parse HEAD^) &&
test_tick &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
diff --git a/t/t3409-rebase-preserve-merges.sh b/t/t3409-rebase-preserve-merges.sh
index 6de4e22..2e0c364 100755
--- a/t/t3409-rebase-preserve-merges.sh
+++ b/t/t3409-rebase-preserve-merges.sh
@@ -11,14 +11,6 @@ Run "git rebase -p" and check that merges are properly carried along
GIT_AUTHOR_EMAIL=bogus_email_address
export GIT_AUTHOR_EMAIL
-# Clone 1 (trivial merge):
-#
-# A1--A2 <-- origin/master
-# \ \
-# B1--M <-- topic
-# \
-# B2 <-- origin/topic
-#
# Clone 2 (conflicting merge):
#
# A1--A2--B3 <-- origin/master
@@ -36,16 +28,6 @@ export GIT_AUTHOR_EMAIL
# \--A3 <-- topic2
# \
# B2 <-- origin/topic
-#
-# Clone 4 (merge using second parent as base):
-#
-# A1--A2--B3 <-- origin/master
-# \
-# B1--A3--M <-- topic
-# \ /
-# \--A4 <-- topic2
-# \
-# B2 <-- origin/topic
test_expect_success 'setup for merge-preserving rebase' \
'echo First > A &&
@@ -58,20 +40,6 @@ test_expect_success 'setup for merge-preserving rebase' \
git checkout -f master &&
echo Third >> A &&
git commit -a -m "Modify A2" &&
-
- git clone ./. clone1 &&
- (cd clone1 &&
- git checkout -b topic origin/topic &&
- git merge origin/master
- ) &&
-
- git clone ./. clone4 &&
- (
- cd clone4 &&
- git checkout -b topic origin/topic &&
- git merge origin/master
- ) &&
-
echo Fifth > B &&
git add B &&
git commit -m "Add different B" &&
@@ -101,16 +69,6 @@ test_expect_success 'setup for merge-preserving rebase' \
git commit -a -m "Modify B2"
'
-test_expect_success 'rebase -p fakes interactive rebase' '
- (
- cd clone1 &&
- git fetch &&
- git rebase -p origin/topic &&
- test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
- test 1 = $(git rev-list --all --pretty=oneline | grep "Merge remote-tracking branch " | wc -l)
- )
-'
-
test_expect_success '--continue works after a conflict' '
(
cd clone2 &&
@@ -138,15 +96,4 @@ test_expect_success 'rebase -p preserves no-ff merges' '
)
'
-test_expect_success 'rebase -p works when base inside second parent' '
- (
- cd clone4 &&
- git fetch &&
- git rebase -p HEAD^2 &&
- test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
- test 1 = $(git rev-list --all --pretty=oneline | grep "Modify B" | wc -l) &&
- test 1 = $(git rev-list --all --pretty=oneline | grep "Merge remote-tracking branch " | wc -l)
- )
-'
-
test_done
diff --git a/t/t3425-rebase-topology-merges.sh b/t/t3425-rebase-topology-merges.sh
new file mode 100755
index 0000000..5400a05
--- /dev/null
+++ b/t/t3425-rebase-topology-merges.sh
@@ -0,0 +1,258 @@
+#!/bin/sh
+
+test_description='rebase topology tests with merges'
+. ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-rebase.sh
+
+test_revision_subjects () {
+ expected="$1"
+ shift
+ set -- $(git log --format=%s --no-walk=unsorted "$@")
+ test "$expected" = "$*"
+}
+
+# a---b-----------c
+# \ \
+# d-------e \
+# \ \ \
+# n---o---w---v
+# \
+# z
+test_expect_success 'setup of non-linear-history' '
+ test_commit a &&
+ test_commit b &&
+ test_commit c &&
+ git checkout b &&
+ test_commit d &&
+ test_commit e
+
+ git checkout c &&
+ test_commit g &&
+ revert h g &&
+ git checkout d &&
+ cherry_pick G g &&
+ test_commit i &&
+ git checkout b &&
+ test_commit f
+
+ git checkout d &&
+ test_commit n &&
+ test_commit o &&
+ test_merge w e &&
+ test_merge v c &&
+ git checkout o &&
+ test_commit z
+'
+
+test_run_rebase () {
+ result=$1
+ shift
+ test_expect_$result "rebase $* after merge from upstream" "
+ reset_rebase &&
+ git rebase $* e w &&
+ test_cmp_rev e HEAD~2 &&
+ test_linear_range 'n o' e..
+ "
+}
+test_run_rebase success ''
+test_run_rebase success -m
+test_run_rebase success -i
+
+test_run_rebase () {
+ result=$1
+ shift
+ expected=$1
+ shift
+ test_expect_$result "rebase $* of non-linear history is linearized in place" "
+ reset_rebase &&
+ git rebase $* d w &&
+ test_cmp_rev d HEAD~3 &&
+ test_linear_range "\'"$expected"\'" d..
+ "
+}
+#TODO: make order consistent across all flavors of rebase
+test_run_rebase success 'e n o' ''
+test_run_rebase success 'e n o' -m
+test_run_rebase success 'n o e' -i
+
+test_run_rebase () {
+ result=$1
+ shift
+ expected=$1
+ shift
+ test_expect_$result "rebase $* of non-linear history is linearized upstream" "
+ reset_rebase &&
+ git rebase $* c w &&
+ test_cmp_rev c HEAD~4 &&
+ test_linear_range "\'"$expected"\'" c..
+ "
+}
+#TODO: make order consistent across all flavors of rebase
+test_run_rebase success 'd e n o' ''
+test_run_rebase success 'd e n o' -m
+test_run_rebase success 'd n o e' -i
+
+test_run_rebase () {
+ result=$1
+ shift
+ expected=$1
+ shift
+ test_expect_$result "rebase $* of non-linear history with merges after upstream merge is linearized" "
+ reset_rebase &&
+ git rebase $* c v &&
+ test_cmp_rev c HEAD~4 &&
+ test_linear_range "\'"$expected"\'" c..
+ "
+}
+#TODO: make order consistent across all flavors of rebase
+test_run_rebase success 'd e n o' ''
+test_run_rebase success 'd e n o' -m
+test_run_rebase success 'd n o e' -i
+
+test_expect_success "rebase -p is no-op in non-linear history" "
+ reset_rebase &&
+ git rebase -p d w &&
+ test_cmp_rev w HEAD
+"
+
+test_expect_success "rebase -p is no-op when base inside second parent" "
+ reset_rebase &&
+ git rebase -p e w &&
+ test_cmp_rev w HEAD
+"
+
+test_expect_failure "rebase -p --root on non-linear history is a no-op" "
+ reset_rebase &&
+ git rebase -p --root w &&
+ test_cmp_rev w HEAD
+"
+
+test_expect_success "rebase -p re-creates merge from side branch" "
+ reset_rebase &&
+ git rebase -p z w &&
+ test_cmp_rev z HEAD^ &&
+ test_cmp_rev w^2 HEAD^2
+"
+
+test_expect_success "rebase -p re-creates internal merge" "
+ reset_rebase &&
+ git rebase -p c w &&
+ test_cmp_rev c HEAD~4 &&
+ test_cmp_rev HEAD^2^ HEAD~3 &&
+ test_revision_subjects 'd n e o w' HEAD~3 HEAD~2 HEAD^2 HEAD^ HEAD
+"
+
+test_expect_success "rebase -p can re-create two branches on onto" "
+ reset_rebase &&
+ git rebase -p --onto c d w &&
+ test_cmp_rev c HEAD~3 &&
+ test_cmp_rev c HEAD^2^ &&
+ test_revision_subjects 'n e o w' HEAD~2 HEAD^2 HEAD^ HEAD
+"
+
+# f
+# /
+# a---b---c---g---h
+# \
+# d---G---i
+# \ \
+# e-------u
+#
+# uppercase = cherry-picked
+# h = reverted g
+test_expect_success 'setup of non-linear-history for patch-equivalence tests' '
+ git checkout e &&
+ test_merge u i
+'
+
+test_expect_success "rebase -p re-creates history around dropped commit matching upstream" "
+ reset_rebase &&
+ git rebase -p h u &&
+ test_cmp_rev h HEAD~3 &&
+ test_cmp_rev HEAD^2^ HEAD~2 &&
+ test_revision_subjects 'd i e u' HEAD~2 HEAD^2 HEAD^ HEAD
+"
+
+test_expect_success "rebase -p --onto in merged history drops patches in upstream" "
+ reset_rebase &&
+ git rebase -p --onto f h u &&
+ test_cmp_rev f HEAD~3 &&
+ test_cmp_rev HEAD^2^ HEAD~2 &&
+ test_revision_subjects 'd i e u' HEAD~2 HEAD^2 HEAD^ HEAD
+"
+
+test_expect_success "rebase -p --onto in merged history does not drop patches in onto" "
+ reset_rebase &&
+ git rebase -p --onto h f u &&
+ test_cmp_rev h HEAD~3 &&
+ test_cmp_rev HEAD^2~2 HEAD~2 &&
+ test_revision_subjects 'd G i e u' HEAD~2 HEAD^2^ HEAD^2 HEAD^ HEAD
+"
+
+# a---b---c---g---h
+# \
+# d---G---s
+# \ \ /
+# \ X
+# \ / \
+# e---t
+#
+# uppercase = cherry-picked
+# h = reverted g
+test_expect_success 'setup of non-linear-history for dropping whole side' '
+ git checkout G &&
+ test_merge s e &&
+ git checkout e &&
+ test_merge t G
+'
+
+test_expect_failure "rebase -p drops merge commit when entire first-parent side is dropped" "
+ reset_rebase &&
+ git rebase -p h s &&
+ test_cmp_rev h HEAD~2 &&
+ test_linear_range 'd e' h..
+"
+
+test_expect_success "rebase -p drops merge commit when entire second-parent side is dropped" "
+ reset_rebase &&
+ git rebase -p h t &&
+ test_cmp_rev h HEAD~2 &&
+ test_linear_range 'd e' h..
+"
+
+# a---b---c
+# \
+# d---e
+# \ \
+# n---r
+# \
+# o
+#
+# r = tree-same with n
+test_expect_success 'setup of non-linear-history for empty commits' '
+ git checkout n &&
+ git merge --no-commit e &&
+ git reset n . &&
+ git commit -m r &&
+ git reset --hard &&
+ git clean -f &&
+ git tag r
+'
+
+test_expect_success "rebase -p re-creates empty internal merge commit" "
+ reset_rebase &&
+ git rebase -p c r &&
+ test_cmp_rev c HEAD~3 &&
+ test_cmp_rev HEAD^2^ HEAD~2 &&
+ test_revision_subjects 'd e n r' HEAD~2 HEAD^2 HEAD^ HEAD
+"
+
+test_expect_success "rebase -p re-creates empty merge commit" "
+ reset_rebase &&
+ git rebase -p o r &&
+ test_cmp_rev e HEAD^2 &&
+ test_cmp_rev o HEAD^ &&
+ test_revision_subjects 'r' HEAD
+"
+
+test_done
--
1.8.3.698.g079b096
next prev parent reply other threads:[~2013-06-09 16:45 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 16:40 [PATCH v4 00/45] Massive improvents to rebase and cherry-pick Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 01/45] build: generate and clean test scripts Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 02/45] build: do not install git-remote-testgit Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 03/45] build: trivial cleanup Felipe Contreras
2013-06-09 17:17 ` SZEDER Gábor
2013-06-09 16:40 ` [PATCH v4 04/45] build: add builtin lib Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 05/45] log-tree: remove dependency from sequencer Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 06/45] Move sequencer to builtin Felipe Contreras
2013-06-09 17:02 ` Antoine Pelisse
2013-06-09 17:06 ` Felipe Contreras
2013-06-09 17:07 ` Ramkumar Ramachandra
2013-06-09 17:10 ` Antoine Pelisse
2013-06-09 16:40 ` [PATCH v4 07/45] unpack-trees: plug a memory leak Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 08/45] read-cache: plug a few leaks Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 09/45] sequencer: remove useless indentation Felipe Contreras
2013-06-09 18:17 ` Fredrik Gustafsson
2013-06-09 18:19 ` Felipe Contreras
2013-06-09 19:08 ` Fredrik Gustafsson
2013-06-09 19:16 ` Felipe Contreras
2013-06-09 19:48 ` Fredrik Gustafsson
2013-06-09 16:40 ` [PATCH v4 10/45] sequencer: trivial fix Felipe Contreras
2013-06-09 17:18 ` SZEDER Gábor
2013-06-09 17:23 ` Felipe Contreras
2013-06-09 17:33 ` SZEDER Gábor
2013-06-09 17:37 ` John Keeping
2013-06-09 17:53 ` Felipe Contreras
2013-06-09 19:01 ` John Keeping
2013-06-09 19:11 ` Felipe Contreras
2013-06-09 19:20 ` SZEDER Gábor
2013-06-09 17:47 ` Felipe Contreras
2013-06-09 17:53 ` SZEDER Gábor
2013-06-09 18:21 ` Felipe Contreras
2013-06-09 21:09 ` Philip Oakley
2013-06-09 16:40 ` [PATCH v4 11/45] cherry-pick: don't barf when there's nothing to do Felipe Contreras
2013-06-09 19:21 ` Fredrik Gustafsson
2013-06-09 19:32 ` Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 12/45] cherry-pick: add --skip-empty option Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 13/45] revert/cherry-pick: add --quiet option Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 14/45] revert/cherry-pick: add --skip option Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 15/45] builtin: add rewrite helper Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 16/45] cherry-pick: store rewritten commits Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 17/45] cherry-pick: don't store skipped commit Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 18/45] builtin: move run_rewrite_hook() to rewrite.c Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 19/45] builtin: add copy_rewrite_notes() Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 20/45] cherry-pick: copy notes and run hooks Felipe Contreras
2013-06-09 17:22 ` Thomas Rast
2013-06-09 17:29 ` Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 21/45] cherry-pick: add --action-name option Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 22/45] cherry-pick: remember rerere-autoupdate Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 23/45] rebase: split the cherry-pick stuff Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 24/45] rebase: cherry-pick: fix mode storage Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 25/45] rebase: cherry-pick: fix sequence continuation Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 26/45] rebase: cherry-pick: fix abort of cherry mode Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 27/45] rebase: cherry-pick: fix command invocations Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 28/45] rebase: cherry-pick: fix status messages Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 29/45] rebase: cherry-pick: automatically commit stage Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 30/45] rebase: cherry-pick: set correct action-name Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 31/45] rebase: trivial cleanup Felipe Contreras
2013-06-09 19:15 ` Fredrik Gustafsson
2013-06-11 16:12 ` Junio C Hamano
2013-06-11 17:08 ` Fredrik Gustafsson
2013-06-11 17:09 ` Felipe Contreras
2013-06-11 17:24 ` Fredrik Gustafsson
2013-06-11 17:26 ` Felipe Contreras
2013-06-11 17:41 ` Fredrik Gustafsson
2013-06-11 17:42 ` Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 32/45] rebase: use 'cherrypick' mode instead of 'am' Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 33/45] rebase: cherry-pick: fix for shell prompt Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 34/45] rebase: cherry-pick: add merge options Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 35/45] rebase: remove merge mode Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 36/45] rebase: cherry-pick: add copyright Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 37/45] tests: fix autostash Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 38/45] add simple tests of consistency across rebase types Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 39/45] add tests for rebasing with patch-equivalence present Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 40/45] add tests for rebasing of empty commits Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 41/45] add tests for rebasing root Felipe Contreras
2013-06-09 16:40 ` Felipe Contreras [this message]
2013-06-09 17:25 ` [PATCH v4 42/45] add tests for rebasing merged history Thomas Rast
2013-06-09 17:31 ` Felipe Contreras
2013-06-09 17:32 ` Thomas Rast
2013-06-09 17:46 ` Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 43/45] t3406: modernize style Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 44/45] tests: move test for rebase messages from t3400 to t3406 Felipe Contreras
2013-06-09 16:40 ` [PATCH v4 45/45] tests: update topology tests Felipe Contreras
2013-06-11 4:37 ` Martin von Zweigbergk
2013-06-11 4:41 ` Felipe Contreras
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=1370796057-25312-43-git-send-email-felipe.contreras@gmail.com \
--to=felipe.contreras@gmail.com \
--cc=artagnon@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=martin.von.zweigbergk@gmail.com \
--cc=martinvonz@gmail.com \
/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).