-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
Description
the current "rsync the .git directory" approach is elegant and robust but unfortunately slow. Two others that we should support / experiment with:
- leverage
git pushinstead of the mainrsynccall- the original implementation worked this way, but was very brittle:
- stitching together the staged and unstaged states was done via writing diffs to files, packing them into a tar file,
(s)cp'ing the tar file to the remote, unpacked, and applying+adding+applying - did not support untracked files, offered no reasonable way to do so
- did not robustly/correctly copy branch/upstream/refs stats.
- stitching together the staged and unstaged states was done via writing diffs to files, packing them into a tar file,
- I think that this post-
pushwork could be more easily done by carefullyrsyncing only certain pieces of the.gitdirectory, as well asrsyncing relevant changed files from the local repo, similarly to how the currentrsync-based implementation works.
- the original implementation worked this way, but was very brittle:
- don't copy any
gitstate over, onlyrsyncthe files that git knows about / is not ignoring- this is likely fairly straightforward to do, should be quick, and is ideal for the case where the ultimate to desire is to have e.g. a remote
watchmanbuilding or packing some artifact(s).
- this is likely fairly straightforward to do, should be quick, and is ideal for the case where the ultimate to desire is to have e.g. a remote