-
-
Save alct/05cc9a2b4657d51669c96cb22cd5c4a6 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
usage() { | |
echo " | |
SYNOPSIS: | |
git-bundle-bug <command> [DIR1] [DIR2] | |
Where <command> is one of: | |
bundles Generate 30 bundles for a given git repo and output bundle hash, name and delta. | |
dummy Provision a git repo containing dummy files and commits. | |
github Clones 5 popular Github projects and generates 30 bundles per repo. | |
help Print this help message. | |
and DIR1, DIR2: | |
DIR1 '/absolute/path/to/working/dir' (default: /tmp/git-dummy-env) | |
Either a git repo when used with the 'bundles' command or a empty dir | |
when used with 'dummy' or 'github'. | |
DIR2 '/absolute/path/to/bundles/dir' (default: defaults to '/tmp/git-bundles') | |
The dir where the bundles will be created. | |
DESCRIPTION: | |
Quick and dirty PoC to reproduce a bug where git does not generate the exact | |
same bundle for the exact same repo. Used with the 'bundle' command, | |
it generates 30 (supposedly identical) bundles for a given repo and prints a | |
hash, bundle name and delta. | |
USAGE: | |
For a completely automated process (provisioning of a dummy git repo, creation | |
of a series of bundle based on that repo), use the 'dummy' command. | |
NOTE, to avoid messing with existing repos, 'dummy' will fail if the working dir | |
already exists. | |
git-bundle-bug dummy | |
For a completely automated process with real projects (cloning of 5 Github | |
popular repos, generating 30 bundles per repo) use the 'github' command. | |
BEWARE, with the default repos, it will generate around 15GB of data. | |
You can edit the content of the 'github_projects' var within the | |
'clone_github_repos' to limit or change the repos. | |
git-bundle-bug github | |
If you want to generate bundles for an existing repo, use the 'bundles' command | |
with the absolute path to your repo. | |
git-bundle-bug bundles /absolute/path/to/repo" | |
die | |
} | |
die() { | |
(( $# > 0 )) && echo "${*}" | |
exit 1 | |
} | |
get_datetime() { | |
date --utc '+%Y-%m-%d_%H-%M-%S' | |
} | |
create_dummy_repo() { | |
local git_repo="${1:-/tmp/git-dummy-env}" | |
local dummy_file | |
local i | |
mkdir "${git_repo}" || die | |
pushd "${git_repo}" >/dev/null || die | |
git init >/dev/null || die | |
for i in {1..10}; do | |
dummy_file="file-${i}.txt" | |
echo "foo ${i}" > "${dummy_file}" | |
git add . >/dev/null || die | |
git commit --message "adding ${dummy_file}" >/dev/null || die | |
done | |
popd >/dev/null || die | |
echo "${git_repo}" | |
} | |
generate_bundles() { | |
local git_repo="${1:-/tmp/git-dummy-env}" | |
local bundles_dir="${2:-/tmp/git-bundles}" | |
local tmp_bundle_output="/tmp/bundle_output.txt" | |
local bundle_subdir | |
local bundle | |
local delta | |
local i | |
bundle_subdir="${bundles_dir}/$(get_datetime)_${git_repo##*/}" | |
[[ -d "${bundle_subdir}" ]] || mkdir --parents "${bundle_subdir}" | |
pushd "${git_repo}" >/dev/null || die | |
for i in {1..30}; do | |
bundle="${bundle_subdir}/bundle-${i}" | |
script --quiet --return --command "git bundle create ${bundle} --all" "${tmp_bundle_output}" >/dev/null | |
delta="$(grep --perl-regexp --only-matching "\(delta \d+\)(?=,)" "${tmp_bundle_output}")" | |
rm --force "${tmp_bundle_output}" | |
printf "%s\t%s\n" "$(md5sum "${bundle}")" "${delta}" | |
done | |
popd >/dev/null || die | |
} | |
clone_github_repos() { | |
local working_dir="${1:-/tmp/git-dummy-env}" | |
local tmp_repo_list="/tmp/repo_list.txt" | |
local github_projects="freeCodeCamp/freeCodeCamp 996icu/996.ICU ohmyzsh/ohmyzsh flutter/flutter electron/electron" | |
local project | |
local repo_path | |
[[ -d "${working_dir}" ]] || mkdir "${working_dir}" | |
pushd "${working_dir}" >/dev/null || die | |
for project in ${github_projects}; do | |
repo_path="${working_dir}/${project##*/}" | |
echo "Cloning ${project} into '${repo_path}' ..." | |
echo "${repo_path}" >> "${tmp_repo_list}" | |
git clone "https://github.com/${project}.git" 2>/dev/null 1>&2 || die "An error occured while cloning ${project}. Aborting." | |
done | |
popd >/dev/null || die | |
} | |
automatic_dummy() { | |
create_dummy_repo "${@}" | |
generate_bundles "${@}" | |
} | |
automatic_github() { | |
local repo | |
local tmp_repo_list="/tmp/repo_list.txt" | |
clone_github_repos "${@}" | |
for repo in $(< "${tmp_repo_list}"); do | |
printf "\n%s\n" "${repo}" | |
generate_bundles "${repo}" "${2}" | |
done | |
rm -f "${tmp_repo_list}" | |
} | |
main() { | |
local command="${1}" | |
(( $# < 1 )) && echo "Missing argument." && usage | |
case "${command}" in | |
"bundles") generate_bundles "${@:2}";; | |
"dummy") automatic_dummy "${@:2}";; | |
"github") automatic_github "${@:2}";; | |
"help") usage ;; | |
*) echo "Wrong argument." && usage | |
esac | |
} | |
main "${@}" |
Inconsistent output
/tmp/git-dummy-env/foo
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-1 (delta 70)
5ae16f01d9dd7e29510267c0afc4b98a /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-2 (delta 69)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-3 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-4 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-5 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-6 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-7 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-8 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-9 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-10 (delta 70)
5ae16f01d9dd7e29510267c0afc4b98a /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-11 (delta 69)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-12 (delta 70)
98aa6ee012ca9a836fd92a2f7eab0fba /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-13 (delta 69)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-14 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-15 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-16 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-17 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-18 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-19 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-20 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-21 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-22 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-23 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-24 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-25 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-26 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-27 (delta 70)
5ae16f01d9dd7e29510267c0afc4b98a /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-28 (delta 69)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-29 (delta 70)
d649777cfc6ecd174562d78c1cc10b5f /tmp/git-bundles/2020-01-06_17-41-09_foo/bundle-30 (delta 70)
/tmp/git-dummy-env/bar
d66a06e34736e4efbe7da489f145cac1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-1 (delta 9954)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-2 (delta 9954)
05c36106840b4bc57d1be8718e161201 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-3 (delta 9955)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-4 (delta 9954)
8ac8d814e5c593576c7513de25099a08 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-5 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-6 (delta 9953)
e1ceb89f4d5121af50768fe1ad2c5afd /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-7 (delta 9953)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-8 (delta 9954)
e1ceb89f4d5121af50768fe1ad2c5afd /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-9 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-10 (delta 9953)
fa7ebe3dadd9048c626940e59d817a3b /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-11 (delta 9952)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-12 (delta 9953)
05c36106840b4bc57d1be8718e161201 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-13 (delta 9955)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-14 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-15 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-16 (delta 9953)
784e05fe525b842c2d0be041bbb71e61 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-17 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-18 (delta 9953)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-19 (delta 9954)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-20 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-21 (delta 9953)
784e05fe525b842c2d0be041bbb71e61 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-22 (delta 9953)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-23 (delta 9954)
e1ceb89f4d5121af50768fe1ad2c5afd /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-24 (delta 9953)
d8a26011aaaa33a525fbec1c35d720a6 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-25 (delta 9953)
4519eddfecd90bbedafa615fa4dc20d4 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-26 (delta 9952)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-27 (delta 9954)
d66a06e34736e4efbe7da489f145cac1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-28 (delta 9954)
05c36106840b4bc57d1be8718e161201 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-29 (delta 9955)
761a47a2eef76f08b35f1cfab9e5afd1 /tmp/git-bundles/2020-01-07_17-15-17_bar/bundle-30 (delta 9954)
/tmp/git-dummy-env/qux
c5fafea62f73c1b91f0fd58017f005da /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-1 (delta 20652)
eb804f7ba75cd11b5510b15ee1efa5fd /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-2 (delta 20653)
0c53af55a38f05a2c1e71899df82a02c /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-3 (delta 20654)
313cbf09701a5a7b3aef2aaa957eed6a /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-4 (delta 20652)
18bf7271f4fe881e0263efbb1bdc718e /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-5 (delta 20653)
edc7605ab06e72db1a6dc7c308427bb6 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-6 (delta 20652)
7b0d660a81703d8fa50b3de7057d6c70 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-7 (delta 20653)
3ae03d561b41397e5875d20799cc05a7 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-8 (delta 20654)
3e2e69b4606d27e3bee6e2014896607d /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-9 (delta 20654)
25ee9a8b955b7f9e8fc4b3bb1a657f61 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-10 (delta 20653)
90001f672ab6d1a01aaee62260646c6c /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-11 (delta 20653)
96feebe3073dc0317222e84205255130 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-12 (delta 20652)
072c6f3e1bf072e4749a5d88fb214a8c /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-13 (delta 20652)
8a1f9a6f47a3f6a8c15ce2d6dcfe6a3d /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-14 (delta 20652)
5dca2aa037b77c939fea946942f0ea11 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-15 (delta 20654)
da2da6bf95dba8bd5a613772f55ca3d8 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-16 (delta 20654)
f6038b615c53994f47b28548fe89e244 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-17 (delta 20653)
4fe2a664fc801a82a5e6bab49e805104 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-18 (delta 20653)
25ee9a8b955b7f9e8fc4b3bb1a657f61 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-19 (delta 20653)
44e241cd9dfefa071e20ad421e57f2d7 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-20 (delta 20653)
7a7692788430ebece9b25f6b4b1bb615 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-21 (delta 20653)
56bd3a674b73efd7f19f10d6892933b8 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-22 (delta 20653)
da2da6bf95dba8bd5a613772f55ca3d8 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-23 (delta 20654)
44e241cd9dfefa071e20ad421e57f2d7 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-24 (delta 20653)
25ee9a8b955b7f9e8fc4b3bb1a657f61 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-25 (delta 20653)
c5fafea62f73c1b91f0fd58017f005da /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-26 (delta 20652)
4fe2a664fc801a82a5e6bab49e805104 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-27 (delta 20653)
c679c8ed66e02d83750eeebeb198c424 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-28 (delta 20653)
7adaf3d20caaade97bbbf70cf8b498de /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-29 (delta 20654)
a3f80dc336cc709b2aa6cda8dcbbc100 /tmp/git-bundles/2020-01-07_17-16-01_qux/bundle-30 (delta 20652)
/tmp/git-dummy-env/waldo
5fbbfbc4ff0202f80fd01ac112a31649 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-1 (delta 1575)
6c06e0695871f4199ffa30c7263114d5 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-2 (delta 1574)
cc202e8164a72bf9b26e58c38b349ab2 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-3 (delta 1576)
b66fc478e0f335db43855bf1747a88e7 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-4 (delta 1574)
c2264f8826ec07cc792de4948fd289f5 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-5 (delta 1575)
260d16f3646e7635f93347a6cfbfbef5 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-6 (delta 1574)
11fa8025b867ba5a68cd83b27b68e5a8 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-7 (delta 1574)
bb342a6d118b6ce39cbf744c080c42a0 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-8 (delta 1575)
f965cc8f3dcecb1c4d7032d164373b49 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-9 (delta 1574)
12f13b3c5c0770e99b18876d6e1677ae /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-10 (delta 1573)
bb342a6d118b6ce39cbf744c080c42a0 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-11 (delta 1575)
11fa8025b867ba5a68cd83b27b68e5a8 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-12 (delta 1574)
004edb20969f129401ae3107700b6d35 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-13 (delta 1575)
1cf55e03e2ea99dd36532606b28b608c /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-14 (delta 1574)
89ef32ec9ec00259ef43b9caac3c88ee /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-15 (delta 1575)
1d33046fbe82ebadffee094894de472b /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-16 (delta 1575)
8aca30312c7adccd68d8e9f7a9aa0f0c /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-17 (delta 1574)
55a99de570f6603f0720c54322fc768e /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-18 (delta 1574)
f4e41ef2ec065d75bcc19e3033dab1ce /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-19 (delta 1574)
4d897c2045dfd495642ea32fa96188da /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-20 (delta 1575)
017652f055f1c2915399d6fad1e5f5f0 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-21 (delta 1574)
6206244dcc1eab02c16b37cdfc700dda /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-22 (delta 1576)
10348cd546ebb7bfed89a019773771bf /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-23 (delta 1574)
6206244dcc1eab02c16b37cdfc700dda /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-24 (delta 1576)
46d2bea585ecacdb3c82e636c69c42d0 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-25 (delta 1573)
4f13be36d272a5c3e335d2ea5dabd1ed /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-26 (delta 1575)
aefbac5045660403af0885b2fc3e8d54 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-27 (delta 1575)
197d9a3d531c3fe371a3c344ab97cef1 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-28 (delta 1576)
06c5d9e9766bf136447a380087955664 /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-29 (delta 1574)
4d897c2045dfd495642ea32fa96188da /tmp/git-bundles/2020-01-07_17-17-35_waldo/bundle-30 (delta 1575)
Consistent output
/tmp/git-dummy-env/freeCodeCamp
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-1 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-2 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-3 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-4 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-5 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-6 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-7 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-8 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-9 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-10 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-11 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-12 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-13 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-14 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-15 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-16 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-17 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-18 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-19 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-20 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-21 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-22 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-23 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-24 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-25 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-26 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-27 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-28 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-29 (delta 127291)
dd0862a84f56020b5b3cf9a72520839e /tmp/git-bundles/2020-01-06_17-29-04_freeCodeCamp/bundle-30 (delta 127291)
/tmp/git-dummy-env/996.ICU
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-1 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-2 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-3 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-4 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-5 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-6 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-7 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-8 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-9 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-10 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-11 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-12 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-13 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-14 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-15 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-16 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-17 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-18 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-19 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-20 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-21 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-22 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-23 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-24 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-25 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-26 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-27 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-28 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-29 (delta 4961)
b9ddcacf61d023c3aeee97dc6b02efbc /tmp/git-bundles/2020-01-06_17-30-23_996.ICU/bundle-30 (delta 4961)
/tmp/git-dummy-env/ohmyzsh
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-1 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-2 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-3 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-4 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-5 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-6 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-7 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-8 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-9 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-10 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-11 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-12 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-13 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-14 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-15 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-16 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-17 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-18 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-19 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-20 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-21 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-22 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-23 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-24 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-25 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-26 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-27 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-28 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-29 (delta 12036)
89f4427465345eeeba5b742c391d1870 /tmp/git-bundles/2020-01-06_17-31-07_ohmyzsh/bundle-30 (delta 12036)
/tmp/git-dummy-env/flutter
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-1 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-2 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-3 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-4 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-5 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-6 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-7 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-8 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-9 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-10 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-11 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-12 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-13 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-14 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-15 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-16 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-17 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-18 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-19 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-20 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-21 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-22 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-23 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-24 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-25 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-26 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-27 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-28 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-29 (delta 160798)
6077c0b8a9c864ba9671f3ab6824b851 /tmp/git-bundles/2020-01-06_17-31-17_flutter/bundle-30 (delta 160798)
/tmp/git-dummy-env/electron
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-1 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-2 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-3 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-4 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-5 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-6 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-7 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-8 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-9 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-10 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-11 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-12 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-13 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-14 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-15 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-16 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-17 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-18 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-19 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-20 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-21 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-22 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-23 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-24 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-25 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-26 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-27 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-28 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-29 (delta 132995)
e8783f047ef10fd483eea0f7c2aa1966 /tmp/git-bundles/2020-01-06_17-32-24_electron/bundle-30 (delta 132995)