Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

alternative copy-diffs implementations #43

Open
ryan-williams opened this issue Dec 12, 2014 · 0 comments
Open

alternative copy-diffs implementations #43

ryan-williams opened this issue Dec 12, 2014 · 0 comments
Assignees

Comments

@ryan-williams
Copy link
Owner

the current "rsync the .git directory" approach is elegant and robust but unfortunately slow. Two others that we should support / experiment with:

  1. leverage git push instead of the main rsync call
    • 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.
    • I think that this post-push work could be more easily done by carefully rsyncing only certain pieces of the .git directory, as well as rsyncing relevant changed files from the local repo, similarly to how the current rsync-based implementation works.
  2. don't copy any git state over, only rsync the 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 watchman building or packing some artifact(s).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant