Created
May 19, 2021 06:23
-
-
Save shifujun/54edc474e73ee81dbd303196daecc4c7 to your computer and use it in GitHub Desktop.
make a vendor repo with shallow clone
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
cd $(mktemp -d) | |
echo "\n\n" | |
echo Step1: use temp dir: $(pwd) | |
echo "\n\n" | |
echo Step2: init main-repo | |
( | |
mkdir main-repo | |
git -C main-repo init --bare | |
) > /dev/null 2>&1 | |
echo "\n\n" | |
echo Step3: prepare main-repo with 3 commits | |
( | |
git clone main-repo workspace | |
echo "secret" > workspace/secret.txt | |
git -C workspace add -A | |
git -C workspace commit -m "secret commit" | |
git -C workspace revert HEAD --no-edit | |
echo "public" > workspace/public.txt | |
git -C workspace add -A | |
git -C workspace commit -m "public commit" | |
git -C workspace push | |
rm -rf workspace | |
) > /dev/null 2>&1 | |
echo show main-repo log | |
git -C main-repo log --oneline | cat | |
echo "\n\n" | |
echo Step4: make vendor-repo | |
( | |
git clone --bare --depth 1 --branch master file://$(pwd)/main-repo vendor-repo | |
) > /dev/null 2>&1 | |
echo show vendor-repo log | |
git -C vendor-repo log --oneline | cat | |
echo "\n\n" | |
echo Step5: make fork-repo | |
( | |
git clone vendor-repo fork-repo | |
echo "fork" > fork-repo/fork.txt | |
git -C fork-repo add -A | |
git -C fork-repo commit -m "fork commit" | |
) > /dev/null 2>&1 | |
echo show fork-repo log | |
git -C fork-repo log --oneline | cat | |
echo "\n\n" | |
echo Step6: main-repo commit more | |
( | |
git clone main-repo workspace | |
echo "public more" >> workspace/public.txt | |
git -C workspace add -A | |
git -C workspace commit -m "one more public commit" | |
git -C workspace push | |
rm -rf workspace | |
) > /dev/null 2>&1 | |
echo show main-repo log | |
git -C main-repo log --oneline | cat | |
echo "\n\n" | |
echo Step7: sync vendor-repo with main-repo | |
( | |
git -C vendor-repo worktree add workspace master | |
git -C vendor-repo/workspace pull file://$(pwd)/main-repo master | |
git -C vendor-repo worktree remove workspace | |
) > /dev/null 2>&1 | |
echo show vendor-repo log | |
git -C vendor-repo log --oneline | cat | |
echo "\n\n" | |
echo Step8: fork-repo merge commit from vendor-repo | |
( | |
git -C fork-repo pull | |
) > /dev/null 2>&1 | |
echo show fork-repo log | |
git -C fork-repo log --oneline | cat |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment