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 0/3] improvements for git-bundle
Date: Mon, 11 Jan 2021 21:27:00 -0500 [thread overview]
Message-ID: <20210112022703.1884-1-worldhello.net@gmail.com> (raw)
In-Reply-To: <xmqq1rer8cbz.fsf@gitster.c.googlers.com>
From: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Introduce two improvements for git-bundle
+ Commit "bundle: lost objects when removing duplicate pendings",
which fixes command like:
$ git bundle create <file> 'master^!'
+ Commits "bundle: arguments can be read from stdin",
which add "--stdin" option support for git-bundle, like:
$ git bundle create <file> <input
## Changes since v5:
Junio C Hamano <gitster@pobox.com> writes:
>
> Jiang Xin <worldhello.net@gmail.com> writes:
>
> > + var=$1
> > + shift
> > + if test -z "$var"
> > + then
> > + echo >&2 "error: var is not defined"
> > + return 1
> > + fi
>
> We need to check $# immediately after the loop to ensure that we can
> carve out $var and at least another arg. [*Nit 1*]
>
> The previous round required the command line to have at least one
> after the loop (including parsing of $var) parsed it, but now we
> fall through from here when a command line were:
>
> test_commit_setvar --merge -C there VAR
>
> and because "$1" does not exist, such an error is propagated down to
> "git merge" not getting the side branch, "git tag" not getting the
> object to tag, etc.
range-diff v5...v6 (part-1):
@@ t/t6020-bundle-misc.sh (new)
+ esac
+ shift
+ done
-+
-+ var=$1
-+ shift
-+ if test -z "$var"
++ if test $# -lt 2
+ then
-+ echo >&2 "error: var is not defined"
++ 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
> > + else
> > + file=${2:-"$1.t"} &&
> > + echo "${3-$1}" > "$indir$file" &&
>
> Style? [*Nit 2*]
range-diff v5...v6 (part-2):
* Add new arg "${2:-HEAD}" for `git tag`.
* Fix [*Nit 2*].
@@ t/t6020-bundle-misc.sh (new)
+ oid=$(git ${indir:+ -C "$indir"} rev-parse HEAD)
+ elif test -n "$tag"
+ then
-+ git ${indir:+ -C "$indir"} tag -m "$1" "$1" &&
++ 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" &&
++ 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)
> > +# 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/$(echo $A | cut -c1-7)[0-9a-f]*/<COMMIT-A>/g" \
>
> Is "$(echo $A | cut -c1-7)" the same as "${A%${A#???????}}"? If so,
> the latter may be a bit shorter.
range-diff v5...v6 (part-3):
@@ t/t6020-bundle-misc.sh (new)
+ 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/$(echo $A | cut -c1-7)[0-9a-f]*/<COMMIT-A>/g" \
-+ -e "s/$(echo $B | cut -c1-7)[0-9a-f]*/<COMMIT-B>/g" \
-+ -e "s/$(echo $C | cut -c1-7)[0-9a-f]*/<COMMIT-C>/g" \
-+ -e "s/$(echo $D | cut -c1-7)[0-9a-f]*/<COMMIT-D>/g" \
-+ -e "s/$(echo $E | cut -c1-7)[0-9a-f]*/<COMMIT-E>/g" \
-+ -e "s/$(echo $F | cut -c1-7)[0-9a-f]*/<COMMIT-F>/g" \
-+ -e "s/$(echo $G | cut -c1-7)[0-9a-f]*/<COMMIT-G>/g" \
-+ -e "s/$(echo $H | cut -c1-7)[0-9a-f]*/<COMMIT-H>/g" \
-+ -e "s/$(echo $I | cut -c1-7)[0-9a-f]*/<COMMIT-I>/g" \
-+ -e "s/$(echo $J | cut -c1-7)[0-9a-f]*/<COMMIT-J>/g" \
-+ -e "s/$(echo $K | cut -c1-7)[0-9a-f]*/<COMMIT-K>/g" \
-+ -e "s/$(echo $L | cut -c1-7)[0-9a-f]*/<COMMIT-L>/g" \
-+ -e "s/$(echo $M | cut -c1-7)[0-9a-f]*/<COMMIT-M>/g" \
-+ -e "s/$(echo $N | cut -c1-7)[0-9a-f]*/<COMMIT-N>/g" \
-+ -e "s/$(echo $O | cut -c1-7)[0-9a-f]*/<COMMIT-O>/g" \
-+ -e "s/$(echo $P | cut -c1-7)[0-9a-f]*/<COMMIT-P>/g" \
-+ -e "s/$(echo $TAG1 | cut -c1-7)[0-9a-f]*/<TAG-1>/g" \
-+ -e "s/$(echo $TAG2 | cut -c1-7)[0-9a-f]*/<TAG-2>/g" \
-+ -e "s/$(echo $TAG3 | cut -c1-7)[0-9a-f]*/<TAG-3>/g" \
++ -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/ *\$//"
+}
+
> Do we even need the "error" message? "git index-pack" would have
> already given some error message to its standard error stream, no?
> If so
>
> if test -n "$thin"
> then
> ...
> fi || return 1
>
> would be sufficient, I guess.
range-diff v5...v6 (part-4):
1: fa7516b2ec ! 1: 900bb16178 test: add helper functions for git-bundle
@@ t/test-bundle-functions.sh (new)
+ git index-pack --stdin --fix-thin "$pack" <"$bundle.thin.pack"
+ else
+ git index-pack "$pack"
-+ fi
-+ if test $? -ne 0
-+ then
-+ echo >&2 "error: fail to convert $bundle or index-pack"
-+ return 1
-+ fi
++ 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"
2: ea543de111 = 2: 1bbf0ab213 bundle: lost objects when removing duplicate pendings
3: 18f0d48814 = 3: 7ac0751821 bundle: arguments can be read from stdin
--
Jiang Xin (3):
test: add helper functions for git-bundle
bundle: lost objects when removing duplicate pendings
bundle: arguments can be read from stdin
bundle.c | 109 +++++----
object.c | 10 +-
t/t5510-fetch.sh | 26 +--
t/t5607-clone-bundle.sh | 4 +-
t/t6020-bundle-misc.sh | 463 +++++++++++++++++++++++++++++++++++++
t/test-bundle-functions.sh | 42 ++++
6 files changed, 576 insertions(+), 78 deletions(-)
create mode 100755 t/t6020-bundle-misc.sh
create mode 100644 t/test-bundle-functions.sh
--
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 ` Jiang Xin [this message]
2021-01-12 2:27 ` [PATCH v6 " Jiang Xin
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-1-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).