From: ZheNing Hu <adlternative@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: "Derrick Stolee" <derrickstolee@github.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Victoria Dye" <vdye@github.com>,
"Elijah Newren" <newren@gmail.com>
Subject: Question relate to collaboration on git monorepo
Date: Tue, 20 Sep 2022 20:42:34 +0800 [thread overview]
Message-ID: <CAOLTT8SHo66kGbvWr=+LQ9UVd1NHgqGGEYK2qq6==QgRCgLZqQ@mail.gmail.com> (raw)
Hey, guys,
If two users of git monorepo are working on different sub project
/project1 and /project2 by partial-clone and sparse-checkout ,
if user one push first, then user two want to push too, he must
pull some blob which pushed by user one. I guess their repo size
will gradually increase by other's project's objects, so is there any way
to delete unnecessary blobs out of working project (sparse-checkout
filterspec), or just git pull don't really fetch these unnecessary blobs?
The large number of interruptions in git push may be another
problem, if thousands of probjects are in one monorepo, and
no one else has any code that would conflict with me in any way,
but I need pull everytime? Is there a way to make improvements
here?
Here's an example of how two users constrain each other when git push.
#!/bin/sh
rm -rf mono-repo
git init mono-repo -b main
(
cd mono-repo
mkdir project1
mkdir project2
for ((i=0;i<10;i++))
do
echo $i >> project1/file1
echo $i >> project2/file2
done
git add .
git commit -m init
)
rm -rf mono-repo.git
git clone --bare mono-repo
# user1
rm -rf m1
git clone --filter="blob:none" --no-checkout --no-local ./mono-repo.git m1
(
cd m1
git sparse-checkout set project1
git checkout main
for ((i=0;i<10;i++))
do
echo "data1-$i" >> project1/file1
git add .
git commit -m "c1 $i"
done
)
# user2
rm -rf m2
git clone --filter="blob:none" --no-checkout --no-local ./mono-repo.git m2
(
cd m2
git sparse-checkout set project2
git checkout main
for ((i=0;i<10;i++))
do
echo "data2-$i" >> project2/file2
git add .
git commit -m "c2 $i"
done
)
# user1 push
(
cd m1
git push
)
# user2 push failed, then pull user1's blob
(
cd m2
git cat-file --batch-check --batch-all-objects | grep blob | wc -l >
blob_count1
git push
git -c pull.rebase=false pull --no-edit #no conflict
git cat-file --batch-check --batch-all-objects | grep blob | wc -l >
blob_count2
diff blob_count1 blob_count2
)
--
ZheNing Hu
next reply other threads:[~2022-09-20 12:43 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 12:42 ZheNing Hu [this message]
2022-09-20 18:53 ` Question relate to collaboration on git monorepo Emily Shaffer
2022-09-21 15:22 ` ZheNing Hu
2022-09-21 23:36 ` Elijah Newren
2022-09-22 14:24 ` Derrick Stolee
2022-09-22 15:20 ` Emily Shaffer
2022-09-23 2:08 ` Elijah Newren
2022-09-23 15:46 ` Junio C Hamano
2022-09-23 18:11 ` Derrick Stolee
2022-09-23 14:31 ` ZheNing Hu
2022-09-21 1:47 ` Elijah Newren
2022-09-21 15:42 ` ZheNing Hu
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOLTT8SHo66kGbvWr=+LQ9UVd1NHgqGGEYK2qq6==QgRCgLZqQ@mail.gmail.com' \
--to=adlternative@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=newren@gmail.com \
--cc=vdye@github.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.
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 NNTP newsgroup(s).