From: Matheus Tavares <matheus.bernardino@usp.br>
To: git@vger.kernel.org
Cc: christian.couder@gmail.com, git@jeffhostetler.com, stolee@gmail.com
Subject: [PATCH v2 0/8] Parallel Checkout (part 3)
Date: Fri, 30 Apr 2021 18:40:27 -0300 [thread overview]
Message-ID: <cover.1619818517.git.matheus.bernardino@usp.br> (raw)
In-Reply-To: <cover.1619104091.git.matheus.bernardino@usp.br>
This is the last part of the parallel checkout series. It's based on
mt/parallel-checkout-part-2. This part adds parallel checkout support to
"git checkout-index" and "git checkout <pathspec>", and adds tests for
the parallel checkout framework.
Changes since v2:
Patch 2:
- Mentioned in the commit message which checkout mode the patch is
adding parallel checkout support for (i.e. pathspec-limited mode).
Patch 4:
t/lib-parallel-checkout.sh:
- Added/improved usage message for the helper functions.
- Renamed trace file in test_checkout_workers to avoid collisions.
- At verify_checkout:
* Used --ignore-submodules=none for the diff-index execution. (I
hadn't noticed before that the default behavior changed to
'untracked' on git v2.31.0.)
* Removed the `diff-index --cached` check as it was redundant.
We are already implicitly checking the index by asserting that
`git status` is empty after the `git diff-index HEAD` check.
t/t2080:
- Used `test_ln_s_add`, to avoid requiring the SYMLINKS prereq in all
tests but one.
- Grouped the basic checkout/clone tests in a for loop to make make it
easier to see what are the differences between then (i.e. the
different cases they are testing).
- Added more entry type changes in the branch switch used to check
parallel checkout correctness.
- Added a test to ensure submodules can also use parallel checkout.
- Compare the working trees with `git diff --no-index` instead of
`diff -r` to avoid following symlinks.
Patch 6:
- Split patch into two: one moving the helper functions from t0028 to
lib-encoding.sh, and another actually adding the t2082 tests.
Matheus Tavares (8):
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
checkout-index: add parallel checkout support
parallel-checkout: add tests for basic operations
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
parallel-checkout: add tests related to .gitattributes
ci: run test round with parallel-checkout enabled
builtin/checkout--worker.c | 2 +-
builtin/checkout-index.c | 24 ++-
builtin/checkout.c | 20 ++-
builtin/difftool.c | 2 +-
cache.h | 11 +-
ci/run-build-and-tests.sh | 1 +
parallel-checkout.c | 18 ++
read-cache.c | 12 +-
t/README | 4 +
t/lib-encoding.sh | 25 +++
t/lib-parallel-checkout.sh | 45 +++++
t/t0028-working-tree-encoding.sh | 25 +--
t/t2080-parallel-checkout-basics.sh | 229 ++++++++++++++++++++++++
t/t2081-parallel-checkout-collisions.sh | 162 +++++++++++++++++
t/t2082-parallel-checkout-attributes.sh | 194 ++++++++++++++++++++
unpack-trees.c | 2 +-
16 files changed, 727 insertions(+), 49 deletions(-)
create mode 100644 t/lib-encoding.sh
create mode 100644 t/lib-parallel-checkout.sh
create mode 100755 t/t2080-parallel-checkout-basics.sh
create mode 100755 t/t2081-parallel-checkout-collisions.sh
create mode 100755 t/t2082-parallel-checkout-attributes.sh
Range-diff against v1:
1: f870040bfb = 1: f870040bfb make_transient_cache_entry(): optionally alloc from mem_pool
2: 5e0dee7beb ! 2: e2d82c4337 builtin/checkout.c: complete parallel checkout support
@@ Metadata
## Commit message ##
builtin/checkout.c: complete parallel checkout support
- There is one code path in builtin/checkout.c which still doesn't benefit
- from parallel checkout because it calls checkout_entry() directly,
- instead of unpack_trees(). Let's add parallel checkout support for this
- missing spot as well. Note: the transient cache entries allocated in
- checkout_merged() are now allocated in a mem_pool which is only
- discarded after parallel checkout finishes. This is done because the
- entries need to be valid when run_parallel_checkout() is called.
+ Pathspec-limited checkouts (like `git checkout *.txt`) are performed by
+ a code path that doesn't yet support parallel checkout because it calls
+ checkout_entry() directly, instead of unpack_trees(). Let's add parallel
+ checkout support for this code path too.
+
+ Note: the transient cache entries allocated in checkout_merged() are now
+ allocated in a mem_pool which is only discarded after parallel checkout
+ finishes. This is done because the entries need to be valid when
+ run_parallel_checkout() is called.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
3: 6bf1db2fd8 = 3: 0fe1a5fabc checkout-index: add parallel checkout support
4: 46128ba8d8 ! 4: f604c50dba parallel-checkout: add tests for basic operations
@@ Commit message
included by t2080 for now. But they will also be used by other
parallel-checkout tests in the following patches.
- Original-patch-by: Jeff Hostetler <jeffhost@microsoft.com>
- Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
+ Co-authored-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
## t/lib-parallel-checkout.sh (new) ##
@@
-+# Helpers for t208* tests
++# Helpers for tests invoking parallel-checkout
+
+set_checkout_config () {
+ if test $# -ne 2
+ then
-+ BUG "set_checkout_config() requires two arguments"
++ BUG "usage: set_checkout_config <workers> <threshold>"
+ fi &&
+
+ test_config_global checkout.workers $1 &&
@@ t/lib-parallel-checkout.sh (new)
+test_checkout_workers () {
+ if test $# -lt 2
+ then
-+ BUG "too few arguments to test_checkout_workers()"
++ BUG "too few arguments to test_checkout_workers"
+ fi &&
+
-+ expected_workers=$1 &&
++ local expected_workers=$1 &&
+ shift &&
+
-+ rm -f trace &&
-+ GIT_TRACE2="$(pwd)/trace" "$@" &&
++ local trace_file=trace-test-checkout-workers &&
++ rm -f "$trace_file" &&
++ GIT_TRACE2="$(pwd)/$trace_file" "$@" &&
+
-+ workers=$(grep "child_start\[..*\] git checkout--worker" trace | wc -l) &&
++ local workers=$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l) &&
+ test $workers -eq $expected_workers &&
-+ rm -f trace
++ rm "$trace_file"
+}
+
+# Verify that both the working tree and the index were created correctly
+verify_checkout () {
-+ git -C "$1" diff-index --quiet HEAD -- &&
-+ git -C "$1" diff-index --quiet --cached HEAD -- &&
++ if test $# -ne 1
++ then
++ BUG "usage: verify_checkout <repository path>"
++ fi &&
++
++ git -C "$1" diff-index --ignore-submodules=none --exit-code HEAD -- &&
+ git -C "$1" status --porcelain >"$1".status &&
+ test_must_be_empty "$1".status
+}
@@ t/t2080-parallel-checkout-basics.sh (new)
+. ./test-lib.sh
+. "$TEST_DIRECTORY/lib-parallel-checkout.sh"
+
-+# Test parallel-checkout with a branch switch containing file creations,
-+# deletions, and modification; with different entry types. Switching from B1 to
-+# B2 will have the following changes:
++# Test parallel-checkout with a branch switch containing a variety of file
++# creations, deletions, and modifications, involving different entry types.
++# The branches B1 and B2 have the following paths:
++#
++# B1 B2
++# a/a (file) a (file)
++# b (file) b/b (file)
++#
++# c/c (file) c (symlink)
++# d (symlink) d/d (file)
++#
++# e/e (file) e (submodule)
++# f (submodule) f/f (file)
++#
++# g (submodule) g (symlink)
++# h (symlink) h (submodule)
++#
++# Additionally, the following paths are present on both branches, but with
++# different contents:
++#
++# i (file) i (file)
++# j (symlink) j (symlink)
++# k (submodule) k (submodule)
+#
-+# - a (file): modified
-+# - e/x (file): deleted
-+# - b (symlink): deleted
-+# - b/f (file): created
-+# - e (symlink): created
-+# - d (submodule): created
++# And the following paths are only present in one of the branches:
+#
-+test_expect_success SYMLINKS 'setup repo for checkout with various types of changes' '
++# l/l (file) -
++# - m/m (file)
++#
++test_expect_success 'setup repo for checkout with various types of changes' '
++ git init sub &&
++ (
++ cd sub &&
++ git checkout -b B2 &&
++ echo B2 >file &&
++ git add file &&
++ git commit -m file &&
++
++ git checkout -b B1 &&
++ echo B1 >file &&
++ git add file &&
++ git commit -m file
++ ) &&
++
+ git init various &&
+ (
+ cd various &&
++
+ git checkout -b B1 &&
-+ echo a >a &&
-+ mkdir e &&
-+ echo e/x >e/x &&
-+ ln -s e b &&
-+ git add -A &&
++ mkdir a c e &&
++ echo a/a >a/a &&
++ echo b >b &&
++ echo c/c >c/c &&
++ test_ln_s_add c d &&
++ echo e/e >e/e &&
++ git submodule add ../sub f &&
++ git submodule add ../sub g &&
++ test_ln_s_add c h &&
++
++ echo "B1 i" >i &&
++ test_ln_s_add c j &&
++ git submodule add -b B1 ../sub k &&
++ mkdir l &&
++ echo l/l >l/l &&
++
++ git add . &&
+ git commit -m B1 &&
+
+ git checkout -b B2 &&
-+ echo modified >a &&
-+ rm -rf e &&
-+ rm b &&
-+ mkdir b &&
-+ echo b/f >b/f &&
-+ ln -s b e &&
-+ git init d &&
-+ test_commit -C d f &&
-+ git submodule add ./d &&
-+ git add -A &&
++ git rm -rf :^.gitmodules :^k &&
++ mkdir b d f &&
++ echo a >a &&
++ echo b/b >b/b &&
++ test_ln_s_add b c &&
++ echo d/d >d/d &&
++ git submodule add ../sub e &&
++ echo f/f >f/f &&
++ test_ln_s_add b g &&
++ git submodule add ../sub h &&
++
++ echo "B2 i" >i &&
++ test_ln_s_add b j &&
++ git -C k checkout B2 &&
++ mkdir m &&
++ echo m/m >m/m &&
++
++ git add . &&
+ git commit -m B2 &&
+
+ git checkout --recurse-submodules B1
+ )
+'
+
-+test_expect_success SYMLINKS 'sequential checkout' '
-+ cp -R various various_sequential &&
-+ set_checkout_config 1 0 &&
-+ test_checkout_workers 0 \
-+ git -C various_sequential checkout --recurse-submodules B2 &&
-+ verify_checkout various_sequential
-+'
++for mode in sequential parallel sequential-fallback
++do
++ case $mode in
++ sequential) workers=1 threshold=0 expected_workers=0 ;;
++ parallel) workers=2 threshold=0 expected_workers=2 ;;
++ sequential-fallback) workers=2 threshold=100 expected_workers=0 ;;
++ esac
+
-+test_expect_success SYMLINKS 'parallel checkout' '
-+ cp -R various various_parallel &&
-+ set_checkout_config 2 0 &&
-+ test_checkout_workers 2 \
-+ git -C various_parallel checkout --recurse-submodules B2 &&
-+ verify_checkout various_parallel
-+'
++ test_expect_success "$mode checkout" '
++ repo=various_$mode &&
++ cp -R various $repo &&
+
-+test_expect_success SYMLINKS 'fallback to sequential checkout (threshold)' '
-+ cp -R various various_sequential_fallback &&
-+ set_checkout_config 2 100 &&
-+ test_checkout_workers 0 \
-+ git -C various_sequential_fallback checkout --recurse-submodules B2 &&
-+ verify_checkout various_sequential_fallback
-+'
++ # The just copied files have more recent timestamps than their
++ # associated index entries. So refresh the cached timestamps
++ # to avoid an "entry not up-to-date" error from `git checkout`.
++ # We only have to do this for the submodules as `git checkout`
++ # will already refresh the superproject index before performing
++ # the up-to-date check.
++ #
++ git -C $repo submodule foreach "git update-index --refresh" &&
+
-+test_expect_success SYMLINKS 'parallel checkout on clone' '
-+ git -C various checkout --recurse-submodules B2 &&
-+ set_checkout_config 2 0 &&
-+ test_checkout_workers 2 \
-+ git clone --recurse-submodules various various_parallel_clone &&
-+ verify_checkout various_parallel_clone
-+'
++ set_checkout_config $workers $threshold &&
++ test_checkout_workers $expected_workers \
++ git -C $repo checkout --recurse-submodules B2 &&
++ verify_checkout $repo
++ '
++done
+
-+test_expect_success SYMLINKS 'fallback to sequential checkout on clone (threshold)' '
-+ git -C various checkout --recurse-submodules B2 &&
-+ set_checkout_config 2 100 &&
-+ test_checkout_workers 0 \
-+ git clone --recurse-submodules various various_sequential_fallback_clone &&
-+ verify_checkout various_sequential_fallback_clone
-+'
++for mode in parallel sequential-fallback
++do
++ case $mode in
++ parallel) workers=2 threshold=0 expected_workers=2 ;;
++ sequential-fallback) workers=2 threshold=100 expected_workers=0 ;;
++ esac
++
++ test_expect_success "$mode checkout on clone" '
++ repo=various_${mode}_clone &&
++ set_checkout_config $workers $threshold &&
++ test_checkout_workers $expected_workers \
++ git clone --recurse-submodules --branch B2 various $repo &&
++ verify_checkout $repo
++ '
++done
+
+# Just to be paranoid, actually compare the working trees' contents directly.
-+test_expect_success SYMLINKS 'compare the working trees' '
++test_expect_success 'compare the working trees' '
+ rm -rf various_*/.git &&
-+ rm -rf various_*/d/.git &&
++ rm -rf various_*/*/.git &&
++
++ # We use `git diff` instead of `diff -r` because the latter would
++ # follow symlinks, and not all `diff` implementations support the
++ # `--no-dereference` option.
++ #
++ git diff --no-index various_sequential various_parallel &&
++ git diff --no-index various_sequential various_parallel_clone &&
++ git diff --no-index various_sequential various_sequential-fallback &&
++ git diff --no-index various_sequential various_sequential-fallback_clone
++'
+
-+ diff -r various_sequential various_parallel &&
-+ diff -r various_sequential various_sequential_fallback &&
-+ diff -r various_sequential various_parallel_clone &&
-+ diff -r various_sequential various_sequential_fallback_clone
++# Currently, each submodule is checked out in a separated child process, but
++# these subprocesses must also be able to use parallel checkout workers to
++# write the submodules' entries.
++test_expect_success 'submodules can use parallel checkout' '
++ set_checkout_config 2 0 &&
++ git init super &&
++ (
++ cd super &&
++ git init sub &&
++ test_commit -C sub A &&
++ test_commit -C sub B &&
++ git submodule add ./sub &&
++ git commit -m sub &&
++ rm sub/* &&
++ test_checkout_workers 2 git checkout --recurse-submodules .
++ )
+'
+
+test_expect_success 'parallel checkout respects --[no]-force' '
5: 71be08b895 ! 5: eae6d3a1c1 parallel-checkout: add tests related to path collisions
@@ Commit message
checkout workers, both to avoid race conditions and to report colliding
entries on clone.
- Original-patch-by: Jeff Hostetler <jeffhost@microsoft.com>
- Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
+ Co-authored-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
## parallel-checkout.c ##
@@ parallel-checkout.c: void write_pc_item(struct parallel_checkout_item *pc_item,
## t/lib-parallel-checkout.sh ##
@@ t/lib-parallel-checkout.sh: test_checkout_workers () {
- shift &&
- rm -f trace &&
-- GIT_TRACE2="$(pwd)/trace" "$@" &&
-+ GIT_TRACE2="$(pwd)/trace" "$@" 2>&8 &&
+ local trace_file=trace-test-checkout-workers &&
+ rm -f "$trace_file" &&
+- GIT_TRACE2="$(pwd)/$trace_file" "$@" &&
++ GIT_TRACE2="$(pwd)/$trace_file" "$@" 2>&8 &&
- workers=$(grep "child_start\[..*\] git checkout--worker" trace | wc -l) &&
+ local workers=$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l) &&
test $workers -eq $expected_workers &&
- rm -f trace
+ rm "$trace_file"
-}
+} 8>&2 2>&4
-: ---------- > 6: 9161cd1503 t0028: extract encoding helpers to lib-encoding.sh
6: 1dedfd994a ! 7: bc584897e6 parallel-checkout: add tests related to .gitattributes
@@ Commit message
require external filters, are correctly smudge and written when
parallel-checkout is enabled.
- Note: to avoid repeating code, some helper functions are extracted from
- t0028 into a common lib file.
-
- Original-patch-by: Jeff Hostetler <jeffhost@microsoft.com>
- Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
+ Co-authored-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
- ## t/lib-encoding.sh (new) ##
-@@
-+# Encoding helpers used by t0028 and t2082
-+
-+test_lazy_prereq NO_UTF16_BOM '
-+ test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
-+'
-+
-+test_lazy_prereq NO_UTF32_BOM '
-+ test $(printf abc | iconv -f UTF-8 -t UTF-32 | wc -c) = 12
-+'
-+
-+write_utf16 () {
-+ if test_have_prereq NO_UTF16_BOM
-+ then
-+ printf '\376\377'
-+ fi &&
-+ iconv -f UTF-8 -t UTF-16
-+}
-+
-+write_utf32 () {
-+ if test_have_prereq NO_UTF32_BOM
-+ then
-+ printf '\0\0\376\377'
-+ fi &&
-+ iconv -f UTF-8 -t UTF-32
-+}
-
- ## t/t0028-working-tree-encoding.sh ##
-@@ t/t0028-working-tree-encoding.sh: GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
- . ./test-lib.sh
-+. "$TEST_DIRECTORY/lib-encoding.sh"
-
- GIT_TRACE_WORKING_TREE_ENCODING=1 && export GIT_TRACE_WORKING_TREE_ENCODING
-
--test_lazy_prereq NO_UTF16_BOM '
-- test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
--'
--
--test_lazy_prereq NO_UTF32_BOM '
-- test $(printf abc | iconv -f UTF-8 -t UTF-32 | wc -c) = 12
--'
--
--write_utf16 () {
-- if test_have_prereq NO_UTF16_BOM
-- then
-- printf '\376\377'
-- fi &&
-- iconv -f UTF-8 -t UTF-16
--}
--
--write_utf32 () {
-- if test_have_prereq NO_UTF32_BOM
-- then
-- printf '\0\0\376\377'
-- fi &&
-- iconv -f UTF-8 -t UTF-32
--}
--
- test_expect_success 'setup test files' '
- git config core.eol lf &&
-
-
## t/t2082-parallel-checkout-attributes.sh (new) ##
@@
+#!/bin/sh
7: 3cc5b10081 ! 8: 1bc5c523c5 ci: run test round with parallel-checkout enabled
@@ t/README: and "sha256".
## t/lib-parallel-checkout.sh ##
@@
- # Helpers for t208* tests
+ # Helpers for tests invoking parallel-checkout
+# Parallel checkout tests need full control of the number of workers
+unset GIT_TEST_CHECKOUT_WORKERS
--
2.30.1
next prev parent reply other threads:[~2021-04-30 21:40 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-22 15:17 [PATCH 0/7] Parallel Checkout (part 3) Matheus Tavares
2021-04-22 15:17 ` [PATCH 1/7] make_transient_cache_entry(): optionally alloc from mem_pool Matheus Tavares
2021-04-22 15:17 ` [PATCH 2/7] builtin/checkout.c: complete parallel checkout support Matheus Tavares
2021-04-23 16:19 ` Derrick Stolee
2021-04-26 21:54 ` Matheus Tavares Bernardino
2021-04-22 15:17 ` [PATCH 3/7] checkout-index: add " Matheus Tavares
2021-04-23 18:32 ` Derrick Stolee
2021-04-26 22:30 ` Matheus Tavares Bernardino
2021-04-22 15:17 ` [PATCH 4/7] parallel-checkout: add tests for basic operations Matheus Tavares
2021-04-23 19:18 ` Derrick Stolee
2021-04-27 2:30 ` Matheus Tavares Bernardino
2021-04-22 15:17 ` [PATCH 5/7] parallel-checkout: add tests related to path collisions Matheus Tavares
2021-04-22 15:17 ` [PATCH 6/7] parallel-checkout: add tests related to .gitattributes Matheus Tavares
2021-04-23 19:48 ` Derrick Stolee
2021-04-22 15:17 ` [PATCH 7/7] ci: run test round with parallel-checkout enabled Matheus Tavares
2021-04-23 19:56 ` Derrick Stolee
2021-04-30 21:40 ` Matheus Tavares [this message]
2021-04-30 21:40 ` [PATCH v2 1/8] make_transient_cache_entry(): optionally alloc from mem_pool Matheus Tavares
2021-05-01 17:06 ` Christian Couder
2021-05-03 14:11 ` Matheus Tavares Bernardino
2021-04-30 21:40 ` [PATCH v2 2/8] builtin/checkout.c: complete parallel checkout support Matheus Tavares
2021-05-01 17:08 ` Christian Couder
2021-05-03 14:21 ` Matheus Tavares Bernardino
2021-04-30 21:40 ` [PATCH v2 3/8] checkout-index: add " Matheus Tavares
2021-05-01 17:08 ` Christian Couder
2021-05-03 14:22 ` Matheus Tavares Bernardino
2021-04-30 21:40 ` [PATCH v2 4/8] parallel-checkout: add tests for basic operations Matheus Tavares
2021-04-30 21:40 ` [PATCH v2 5/8] parallel-checkout: add tests related to path collisions Matheus Tavares
2021-05-02 7:59 ` Torsten Bögershausen
2021-05-03 14:58 ` Matheus Tavares Bernardino
2021-04-30 21:40 ` [PATCH v2 6/8] t0028: extract encoding helpers to lib-encoding.sh Matheus Tavares
2021-04-30 21:40 ` [PATCH v2 7/8] parallel-checkout: add tests related to .gitattributes Matheus Tavares
2021-04-30 21:40 ` [PATCH v2 8/8] ci: run test round with parallel-checkout enabled Matheus Tavares
2021-05-02 10:12 ` [PATCH v2 0/8] Parallel Checkout (part 3) Torsten Bögershausen
2021-05-03 15:01 ` Matheus Tavares Bernardino
2021-05-04 16:27 ` [PATCH v3 " Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 1/8] make_transient_cache_entry(): optionally alloc from mem_pool Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 2/8] builtin/checkout.c: complete parallel checkout support Matheus Tavares
2021-05-05 13:55 ` Derrick Stolee
2021-05-04 16:27 ` [PATCH v3 3/8] checkout-index: add " Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 4/8] parallel-checkout: add tests for basic operations Matheus Tavares
2021-05-26 18:36 ` AIX failures on parallel checkout (new in v2.32.0-rc*) Ævar Arnfjörð Bjarmason
2021-05-26 22:01 ` Matheus Tavares Bernardino
2021-05-26 23:00 ` Junio C Hamano
2021-05-04 16:27 ` [PATCH v3 5/8] parallel-checkout: add tests related to path collisions Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 6/8] t0028: extract encoding helpers to lib-encoding.sh Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 7/8] parallel-checkout: add tests related to .gitattributes Matheus Tavares
2021-05-04 16:27 ` [PATCH v3 8/8] ci: run test round with parallel-checkout enabled Matheus Tavares
2021-05-05 13:57 ` [PATCH v3 0/8] Parallel Checkout (part 3) Derrick Stolee
2021-05-06 0:40 ` Junio C Hamano
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=cover.1619818517.git.matheus.bernardino@usp.br \
--to=matheus.bernardino@usp.br \
--cc=christian.couder@gmail.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=stolee@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).