Skip to content

Instantly share code, notes, and snippets.

@shifujun
Created May 19, 2021 06:23
Show Gist options
  • Save shifujun/54edc474e73ee81dbd303196daecc4c7 to your computer and use it in GitHub Desktop.
Save shifujun/54edc474e73ee81dbd303196daecc4c7 to your computer and use it in GitHub Desktop.
make a vendor repo with shallow clone
#!/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