sapling icon indicating copy to clipboard operation
sapling copied to clipboard

Git compatibility

Open Kinrany opened this issue 3 years ago • 4 comments

For organizations and individuals wanting to try Eden, it would help to know going back to Git is possible if something goes wrong.

A few options:

  1. Export Eden repo as a Git repo, preserving history.
  2. Run a Git mirror backed by a (subdirectory of an) Eden repo. Read-only, read and write.
  3. Run an Eden mirror backed by a Git repo.

Is this something you've considered? To what extent does this compatibility make sense given the differences between Git and Eden?

Kinrany avatar Sep 02 '21 09:09 Kinrany

For 1 and 2 we have somewhat similar functionality outside of Eden that is taking the Eden hosted internal repo and syncing changes to the GitHub repo. I don't think that tooling is publicly available.

If and when we add git protocol support do then that may provide an Eden native way to get a git repo from an Eden repo. No timeline for this at present.

For 3, we have some early git import functionality underway, see eden/mononoke/git/gitimport/src/main.rs

ahornby avatar Sep 02 '21 09:09 ahornby

I don't think that tooling is publicly available.

It is - https://github.com/facebook/fbshipit :)

It also supports git -> eden, though the code for that is primarily used for importing pull requests rather than automated mirroring; in theory, both the sync pipelines ('shipit') and pull request pipelines ('importit') can be set up to/from any supported repo, not just eden-source-of-truth to github mirror.

one caveat: it expects the eden CLI to be called hg

fredemmott avatar Sep 13 '21 19:09 fredemmott

Oh, a bigger caveat: it assumes a linear history. It can get very confused by merge commits

fredemmott avatar Sep 13 '21 19:09 fredemmott

Eden CLI and Mononoke now build and test on GitHub actions. Probably you could import a git repo to Mononoke to test end to end with https://github.com/facebookexperimental/eden/blob/main/eden/mononoke/git/gitimport/src/main.rs, but I'm afraid there's no docs describing the process as yet.

ahornby avatar Feb 15 '22 11:02 ahornby

A lot changed with the recent Sapling release. We now provide and support pre-built binaries that interop with Git. See the docs, and open another issue if you still have problems.

yancouto avatar Nov 16 '22 19:11 yancouto