From: Jiang Xin <worldhello.net@gmail.com>
To: "Junio C Hamano" <gitster@pobox.com>,
"Git List" <git@vger.kernel.org>,
"Đoàn Trần Công Danh" <congdanhqx@gmail.com>,
"Jonathan Nieder" <jrnieder@gmail.com>
Cc: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Subject: [PATCH v6 1/3] test: add helper functions for git-bundle
Date: Mon, 11 Jan 2021 21:27:01 -0500 [thread overview]
Message-ID: <20210112022703.1884-2-worldhello.net@gmail.com> (raw)
In-Reply-To: <xmqq1rer8cbz.fsf@gitster.c.googlers.com>
From: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Move git-bundle related functions from t5510 to a library, and this lib
will be shared with a new testcase t6020 which finds a known breakage of
"git-bundle".
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
---
t/t5510-fetch.sh | 26 +--
t/t6020-bundle-misc.sh | 394 +++++++++++++++++++++++++++++++++++++
t/test-bundle-functions.sh | 42 ++++
3 files changed, 440 insertions(+), 22 deletions(-)
create mode 100755 t/t6020-bundle-misc.sh
create mode 100644 t/test-bundle-functions.sh
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index 2013051a64..1e398380eb 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -6,22 +6,10 @@ test_description='Per branch config variables affects "git fetch".
'
. ./test-lib.sh
+. "$TEST_DIRECTORY"/test-bundle-functions.sh
D=$(pwd)
-test_bundle_object_count () {
- git verify-pack -v "$1" >verify.out &&
- test "$2" = $(grep "^$OID_REGEX " verify.out | wc -l)
-}
-
-convert_bundle_to_pack () {
- while read x && test -n "$x"
- do
- :;
- done
- cat
-}
-
test_expect_success setup '
echo >file original &&
git add file &&
@@ -312,9 +300,7 @@ test_expect_success 'unbundle 1' '
test_expect_success 'bundle 1 has only 3 files ' '
cd "$D" &&
- convert_bundle_to_pack <bundle1 >bundle.pack &&
- git index-pack bundle.pack &&
- test_bundle_object_count bundle.pack 3
+ test_bundle_object_count bundle1 3
'
test_expect_success 'unbundle 2' '
@@ -329,9 +315,7 @@ test_expect_success 'bundle does not prerequisite objects' '
git add file2 &&
git commit -m add.file2 file2 &&
git bundle create bundle3 -1 HEAD &&
- convert_bundle_to_pack <bundle3 >bundle.pack &&
- git index-pack bundle.pack &&
- test_bundle_object_count bundle.pack 3
+ test_bundle_object_count bundle3 3
'
test_expect_success 'bundle should be able to create a full history' '
@@ -884,9 +868,7 @@ test_expect_success 'all boundary commits are excluded' '
git merge otherside &&
ad=$(git log --no-walk --format=%ad HEAD) &&
git bundle create twoside-boundary.bdl main --since="$ad" &&
- convert_bundle_to_pack <twoside-boundary.bdl >twoside-boundary.pack &&
- pack=$(git index-pack --fix-thin --stdin <twoside-boundary.pack) &&
- test_bundle_object_count .git/objects/pack/pack-${pack##pack }.pack 3
+ test_bundle_object_count --thin twoside-boundary.bdl 3
'
test_expect_success 'fetch --prune prints the remotes url' '
diff --git a/t/t6020-bundle-misc.sh b/t/t6020-bundle-misc.sh
new file mode 100755
index 0000000000..201f34b5c3
--- /dev/null
+++ b/t/t6020-bundle-misc.sh
@@ -0,0 +1,394 @@
+#!/bin/sh
+#
+# Copyright (c) 2021 Jiang Xin
+#
+
+test_description='Test git-bundle'
+
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
+. ./test-lib.sh
+. "$TEST_DIRECTORY"/test-bundle-functions.sh
+
+# Create a commit or tag and set the variable with the object ID.
+test_commit_setvar () {
+ notick=
+ signoff=
+ indir=
+ merge=
+ tag=
+ var=
+
+ while test $# != 0
+ do
+ case "$1" in
+ --merge)
+ merge=t
+ ;;
+ --tag)
+ tag=t
+ ;;
+ --notick)
+ notick=t
+ ;;
+ --signoff)
+ signoff="$1"
+ ;;
+ -C)
+ shift
+ indir="$1"
+ ;;
+ -*)
+ echo >&2 "error: unknown option $1"
+ return 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+ done
+ if test $# -lt 2
+ then
+ echo >&2 "error: test_commit_setvar must have at least 2 arguments"
+ return 1
+ fi
+ var=$1
+ shift
+ indir=${indir:+"$indir"/}
+ if test -z "$notick"
+ then
+ test_tick
+ fi &&
+ if test -n "$merge"
+ then
+ git ${indir:+ -C "$indir"} merge --no-edit --no-ff \
+ ${2:+-m "$2"} "$1" &&
+ oid=$(git ${indir:+ -C "$indir"} rev-parse HEAD)
+ elif test -n "$tag"
+ then
+ git ${indir:+ -C "$indir"} tag -m "$1" "$1" "${2:-HEAD}" &&
+ oid=$(git ${indir:+ -C "$indir"} rev-parse "$1")
+ else
+ file=${2:-"$1.t"} &&
+ echo "${3-$1}" >"$indir$file" &&
+ git ${indir:+ -C "$indir"} add "$file" &&
+ git ${indir:+ -C "$indir"} commit $signoff -m "$1" &&
+ oid=$(git ${indir:+ -C "$indir"} rev-parse HEAD)
+ fi &&
+ eval $var=$oid
+}
+
+# Format the output of git commands to make a user-friendly and stable
+# text. We can easily prepare the expect text without having to worry
+# about future changes of the commit ID and spaces of the output.
+make_user_friendly_and_stable_output () {
+ sed \
+ -e "s/${A%${A#???????}}[0-9a-f]*/<COMMIT-A>/g" \
+ -e "s/${B%${B#???????}}[0-9a-f]*/<COMMIT-B>/g" \
+ -e "s/${C%${C#???????}}[0-9a-f]*/<COMMIT-C>/g" \
+ -e "s/${D%${D#???????}}[0-9a-f]*/<COMMIT-D>/g" \
+ -e "s/${E%${E#???????}}[0-9a-f]*/<COMMIT-E>/g" \
+ -e "s/${F%${F#???????}}[0-9a-f]*/<COMMIT-F>/g" \
+ -e "s/${G%${G#???????}}[0-9a-f]*/<COMMIT-G>/g" \
+ -e "s/${H%${H#???????}}[0-9a-f]*/<COMMIT-H>/g" \
+ -e "s/${I%${I#???????}}[0-9a-f]*/<COMMIT-I>/g" \
+ -e "s/${J%${J#???????}}[0-9a-f]*/<COMMIT-J>/g" \
+ -e "s/${K%${K#???????}}[0-9a-f]*/<COMMIT-K>/g" \
+ -e "s/${L%${L#???????}}[0-9a-f]*/<COMMIT-L>/g" \
+ -e "s/${M%${M#???????}}[0-9a-f]*/<COMMIT-M>/g" \
+ -e "s/${N%${N#???????}}[0-9a-f]*/<COMMIT-N>/g" \
+ -e "s/${O%${O#???????}}[0-9a-f]*/<COMMIT-O>/g" \
+ -e "s/${P%${P#???????}}[0-9a-f]*/<COMMIT-P>/g" \
+ -e "s/${TAG1%${TAG1#???????}}[0-9a-f]*/<TAG-1>/g" \
+ -e "s/${TAG2%${TAG2#???????}}[0-9a-f]*/<TAG-2>/g" \
+ -e "s/${TAG3%${TAG3#???????}}[0-9a-f]*/<TAG-3>/g" \
+ -e "s/ *\$//"
+}
+
+# (C) (D, pull/1/head, topic/1)
+# o --- o
+# / \ (L)
+# / \ o (H, topic/2) (M, tag:v2)
+# / (F) \ / (N, tag:v3)
+# / o --------- o (G, pull/2/head) o --- o --- o (release)
+# / / \ \ / \
+# o --- o --- o -------- o -- o ------------------ o ------- o --- o (main)
+# (A) (B) (E, tag:v1) (I) (J) (K) (O) (P)
+#
+test_expect_success 'setup' '
+ # Try to make a stable fixed width for abbreviated commit ID,
+ # this fixed-width oid will be replaced with "<OID>".
+ git config core.abbrev 7 &&
+
+ # branch main: commit A & B
+ test_commit_setvar A "Commit A" main.txt &&
+ test_commit_setvar B "Commit B" main.txt &&
+
+ # branch topic/1: commit C & D, refs/pull/1/head
+ git checkout -b topic/1 &&
+ test_commit_setvar C "Commit C" topic-1.txt &&
+ test_commit_setvar D "Commit D" topic-1.txt &&
+ git update-ref refs/pull/1/head HEAD &&
+
+ # branch topic/1: commit E, tag v1
+ git checkout main &&
+ test_commit_setvar E "Commit E" main.txt &&
+ test_commit_setvar --tag TAG1 v1 &&
+
+ # branch topic/2: commit F & G, refs/pull/2/head
+ git checkout -b topic/2 &&
+ test_commit_setvar F "Commit F" topic-2.txt &&
+ test_commit_setvar G "Commit G" topic-2.txt &&
+ git update-ref refs/pull/2/head HEAD &&
+ test_commit_setvar H "Commit H" topic-2.txt &&
+
+ # branch main: merge commit I & J
+ git checkout main &&
+ test_commit_setvar --merge I topic/1 "Merge commit I" &&
+ test_commit_setvar --merge J refs/pull/2/head "Merge commit J" &&
+
+ # branch main: commit K
+ git checkout main &&
+ test_commit_setvar K "Commit K" main.txt &&
+
+ # branch release:
+ git checkout -b release &&
+ test_commit_setvar L "Commit L" release.txt &&
+ test_commit_setvar M "Commit M" release.txt &&
+ test_commit_setvar --tag TAG2 v2 &&
+ test_commit_setvar N "Commit N" release.txt &&
+ test_commit_setvar --tag TAG3 v3 &&
+
+ # branch main: merge commit O, commit P
+ git checkout main &&
+ test_commit_setvar --merge O tags/v2 "Merge commit O" &&
+ test_commit_setvar P "Commit P" main.txt
+'
+
+test_expect_failure 'create bundle from special rev: main^!' '
+ git bundle create special-rev.bdl "main^!" &&
+
+ git bundle list-heads special-rev.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ <COMMIT-P> refs/heads/main
+ EOF
+ test_i18ncmp expect actual &&
+
+ git bundle verify special-rev.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ The bundle contains this ref:
+ <COMMIT-P> refs/heads/main
+ The bundle requires this ref:
+ <COMMIT-O>
+ EOF
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count special-rev.bdl 3
+'
+
+test_expect_success 'create bundle with --max-count option' '
+ git bundle create max-count.bdl --max-count 1 \
+ main \
+ "^release" \
+ refs/tags/v1 \
+ refs/pull/1/head \
+ refs/pull/2/head &&
+
+ git bundle verify max-count.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ The bundle contains these 2 refs:
+ <COMMIT-P> refs/heads/main
+ <TAG-1> refs/tags/v1
+ The bundle requires this ref:
+ <COMMIT-O>
+ EOF
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count max-count.bdl 4
+'
+
+test_expect_success 'create bundle with --since option' '
+ git log -1 --pretty="%ad" $M >actual &&
+ cat >expect <<-\EOF &&
+ Thu Apr 7 15:26:13 2005 -0700
+ EOF
+ test_cmp expect actual &&
+
+ git bundle create since.bdl \
+ --since "Thu Apr 7 15:27:00 2005 -0700" \
+ --all &&
+
+ git bundle verify since.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ The bundle contains these 5 refs:
+ <COMMIT-P> refs/heads/main
+ <COMMIT-N> refs/heads/release
+ <TAG-2> refs/tags/v2
+ <TAG-3> refs/tags/v3
+ <COMMIT-P> HEAD
+ The bundle requires these 2 refs:
+ <COMMIT-M>
+ <COMMIT-K>
+ EOF
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count --thin since.bdl 13
+'
+
+test_expect_success 'create bundle 1 - no prerequisites' '
+ git bundle create 1.bdl topic/1 topic/2 &&
+
+ cat >expect <<-\EOF &&
+ The bundle contains these 2 refs:
+ <COMMIT-D> refs/heads/topic/1
+ <COMMIT-H> refs/heads/topic/2
+ The bundle records a complete history.
+ EOF
+
+ # verify bundle, which has no prerequisites
+ git bundle verify 1.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count 1.bdl 24
+'
+
+test_expect_success 'create bundle 2 - has prerequisites' '
+ git bundle create 2.bdl \
+ --ignore-missing \
+ ^topic/deleted \
+ ^$D \
+ ^topic/2 \
+ release &&
+
+ cat >expect <<-\EOF &&
+ The bundle contains this ref:
+ <COMMIT-N> refs/heads/release
+ The bundle requires these 3 refs:
+ <COMMIT-D>
+ <COMMIT-E>
+ <COMMIT-G>
+ EOF
+
+ git bundle verify 2.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count 2.bdl 16
+'
+
+test_expect_success 'fail to verify bundle without prerequisites' '
+ git init --bare test1.git &&
+
+ cat >expect <<-\EOF &&
+ error: Repository lacks these prerequisite commits:
+ error: <COMMIT-D>
+ error: <COMMIT-E>
+ error: <COMMIT-G>
+ EOF
+
+ test_must_fail git -C test1.git bundle verify ../2.bdl 2>&1 |
+ make_user_friendly_and_stable_output >actual &&
+ test_i18ncmp expect actual
+'
+
+test_expect_success 'create bundle 3 - two refs, same object' '
+ git bundle create --version=3 3.bdl \
+ ^release \
+ ^topic/1 \
+ ^topic/2 \
+ main \
+ HEAD &&
+
+ cat >expect <<-\EOF &&
+ The bundle contains these 2 refs:
+ <COMMIT-P> refs/heads/main
+ <COMMIT-P> HEAD
+ The bundle requires these 2 refs:
+ <COMMIT-M>
+ <COMMIT-K>
+ EOF
+
+ git bundle verify 3.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count 3.bdl 4
+'
+
+test_expect_success 'create bundle 4 - with tags' '
+ git bundle create 4.bdl \
+ ^main \
+ ^release \
+ ^topic/1 \
+ ^topic/2 \
+ --all &&
+
+ cat >expect <<-\EOF &&
+ The bundle contains these 3 refs:
+ <TAG-1> refs/tags/v1
+ <TAG-2> refs/tags/v2
+ <TAG-3> refs/tags/v3
+ The bundle records a complete history.
+ EOF
+
+ git bundle verify 4.bdl |
+ make_user_friendly_and_stable_output >actual &&
+ test_i18ncmp expect actual &&
+
+ test_bundle_object_count 4.bdl 3
+'
+
+test_expect_success 'clone from bundle' '
+ git clone --mirror 1.bdl mirror.git &&
+ git -C mirror.git show-ref |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ <COMMIT-D> refs/heads/topic/1
+ <COMMIT-H> refs/heads/topic/2
+ EOF
+ test_cmp expect actual &&
+
+ git -C mirror.git fetch ../2.bdl "+refs/*:refs/*" &&
+ git -C mirror.git show-ref |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ <COMMIT-N> refs/heads/release
+ <COMMIT-D> refs/heads/topic/1
+ <COMMIT-H> refs/heads/topic/2
+ EOF
+ test_cmp expect actual &&
+
+ git -C mirror.git fetch ../3.bdl "+refs/*:refs/*" &&
+ git -C mirror.git show-ref |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ <COMMIT-P> refs/heads/main
+ <COMMIT-N> refs/heads/release
+ <COMMIT-D> refs/heads/topic/1
+ <COMMIT-H> refs/heads/topic/2
+ EOF
+ test_cmp expect actual &&
+
+ git -C mirror.git fetch ../4.bdl "+refs/*:refs/*" &&
+ git -C mirror.git show-ref |
+ make_user_friendly_and_stable_output >actual &&
+ cat >expect <<-\EOF &&
+ <COMMIT-P> refs/heads/main
+ <COMMIT-N> refs/heads/release
+ <COMMIT-D> refs/heads/topic/1
+ <COMMIT-H> refs/heads/topic/2
+ <TAG-1> refs/tags/v1
+ <TAG-2> refs/tags/v2
+ <TAG-3> refs/tags/v3
+ EOF
+ test_cmp expect actual
+'
+
+test_done
diff --git a/t/test-bundle-functions.sh b/t/test-bundle-functions.sh
new file mode 100644
index 0000000000..cf7ed818b2
--- /dev/null
+++ b/t/test-bundle-functions.sh
@@ -0,0 +1,42 @@
+# Library of git-bundle related functions.
+
+# Display the pack data contained in the bundle file, bypassing the
+# header that contains the signature, prerequisites and references.
+convert_bundle_to_pack () {
+ while read x && test -n "$x"
+ do
+ :;
+ done
+ cat
+}
+
+# Check count of objects in a bundle file.
+# We can use "--thin" opiton to check thin pack, which must be fixed by
+# command `git-index-pack --fix-thin --stdin`.
+test_bundle_object_count () {
+ thin=
+ if test "$1" = "--thin"
+ then
+ thin=t
+ shift
+ fi
+ if test $# -ne 2
+ then
+ echo >&2 "args should be: <bundle> <count>"
+ return 1
+ fi
+ bundle=$1
+ pack=$bundle.pack
+ convert_bundle_to_pack <"$bundle" >"$pack" &&
+ if test -n "$thin"
+ then
+ mv "$pack" "$bundle.thin.pack" &&
+ git index-pack --stdin --fix-thin "$pack" <"$bundle.thin.pack"
+ else
+ git index-pack "$pack"
+ fi || return 1
+ count=$(git show-index <"${pack%pack}idx" | wc -l) &&
+ test $2 = $count && return 0
+ echo >&2 "error: object count for $bundle is $count, not $2"
+ return 1
+}
--
2.28.0.15.gba9e81f0bd
next prev parent reply other threads:[~2021-01-12 2:30 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-03 9:54 [PATCH] bundle: arguments can be read from stdin Jiang Xin
2021-01-04 23:41 ` Junio C Hamano
2021-01-05 16:30 ` [PATCH v2 1/2] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-05 16:30 ` [PATCH v2 2/2] bundle: arguments can be read from stdin Jiang Xin
2021-01-07 13:50 ` [PATCH v3 0/2] improvements for git-bundle Jiang Xin
2021-01-07 13:50 ` [PATCH v3 1/2] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-07 15:37 ` Đoàn Trần Công Danh
2021-01-08 13:14 ` Jiang Xin
2021-01-08 14:45 ` [PATCH v4 0/2] Improvements for git-bundle Jiang Xin
2021-01-08 14:45 ` [PATCH v4 1/2] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-09 2:10 ` Junio C Hamano
2021-01-09 13:32 ` Jiang Xin
2021-01-09 22:02 ` Junio C Hamano
2021-01-10 14:30 ` [PATCH v5 0/3] improvements for git-bundle Jiang Xin
2021-01-10 14:30 ` [PATCH v5 1/3] test: add helper functions " Jiang Xin
2021-01-11 20:09 ` Junio C Hamano
2021-01-12 2:27 ` [PATCH v6 0/3] improvements " Jiang Xin
2021-01-12 2:27 ` Jiang Xin [this message]
2021-05-26 18:49 ` Runaway sed memory use in test on older sed+glibc (was "Re: [PATCH v6 1/3] test: add helper functions for git-bundle") Ævar Arnfjörð Bjarmason
2021-05-27 11:52 ` Jiang Xin
2021-05-27 12:19 ` Ævar Arnfjörð Bjarmason
2021-05-27 13:48 ` Jeff King
2021-05-27 19:19 ` Felipe Contreras
2021-06-01 9:45 ` Jiang Xin
2021-06-01 9:42 ` Jiang Xin
2021-06-01 11:50 ` Ævar Arnfjörð Bjarmason
2021-06-01 13:20 ` Jiang Xin
2021-06-01 14:49 ` [PATCH 1/2] t6020: fix bash incompatible issue Jiang Xin
2021-06-01 14:49 ` [PATCH 2/2] t6020: do not mangle trailing spaces in output Jiang Xin
2021-06-05 17:02 ` Ævar Arnfjörð Bjarmason
2021-06-12 5:07 ` [PATCH v2 0/4] Fixed t6020 bash compatible issue and fixed wrong sideband suffix issue Jiang Xin
2021-06-14 4:10 ` Junio C Hamano
2021-06-15 3:11 ` Jiang Xin
2021-06-17 3:14 ` [PATCH v3] t6020: fix incompatible parameter expansion Jiang Xin
2021-06-21 8:41 ` Ævar Arnfjörð Bjarmason
2021-06-12 5:07 ` [PATCH v2 1/4] t6020: fix bash incompatible issue Jiang Xin
2021-06-12 5:07 ` [PATCH v2 2/4] test: refactor create_commits_in() for t5411 and t5548 Jiang Xin
2021-06-12 5:07 ` [PATCH v2 3/4] sideband: append suffix for message whose CR in next pktline Jiang Xin
2021-06-13 7:47 ` Ævar Arnfjörð Bjarmason
2021-06-14 3:50 ` Junio C Hamano
2021-06-14 11:51 ` Jiang Xin
2021-06-15 1:17 ` Junio C Hamano
2021-06-15 1:47 ` Jiang Xin
2021-06-15 2:11 ` Nicolas Pitre
2021-06-15 3:04 ` Jiang Xin
2021-06-15 3:26 ` Nicolas Pitre
2021-06-15 4:46 ` Junio C Hamano
2021-06-15 7:17 ` Jiang Xin
2021-06-15 14:46 ` Nicolas Pitre
2021-06-12 5:07 ` [PATCH v2 4/4] test: compare raw output, not mangle tabs and spaces Jiang Xin
2021-01-12 2:27 ` [PATCH v6 2/3] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-12 2:27 ` [PATCH v6 3/3] bundle: arguments can be read from stdin Jiang Xin
2021-01-10 14:30 ` [PATCH v5 2/3] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-11 20:12 ` Junio C Hamano
2021-01-10 14:30 ` [PATCH v5 3/3] bundle: arguments can be read from stdin Jiang Xin
2021-01-09 15:09 ` [PATCH v4 1/2] bundle: lost objects when removing duplicate pendings Jiang Xin
2021-01-09 22:02 ` Junio C Hamano
2021-01-08 14:45 ` [PATCH v4 2/2] bundle: arguments can be read from stdin Jiang Xin
2021-01-09 2:18 ` Junio C Hamano
2021-01-07 13:50 ` [PATCH v3 " Jiang Xin
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=20210112022703.1884-2-worldhello.net@gmail.com \
--to=worldhello.net@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=zhiyou.jx@alibaba-inc.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).