Giter VIP home page Giter VIP logo

facebook / sapling Goto Github PK

View Code? Open in Web Editor NEW
5.9K 78.0 269.0 260.78 MB

A Scalable, User-Friendly Source Control System.

Home Page: https://sapling-scm.com

License: GNU General Public License v2.0

Python 22.73% C++ 11.10% Thrift 0.88% C 0.64% Shell 0.38% CMake 0.33% Makefile 0.03% Batchfile 0.01% PowerShell 0.01% Emacs Lisp 0.12% Rust 48.89% Perl 11.81% HTML 1.19% Jupyter Notebook 0.48% Turing 0.14% Raku 0.73% Cython 0.03% Vim Script 0.21% Ruby 0.01% JavaScript 0.29%

sapling's Introduction

Sapling SCM

Sapling SCM is a cross-platform, highly scalable, Git-compatible source control system.

It aims to provide both user-friendly and powerful interfaces for users, as well as extreme scalability to deal with repositories containing many millions of files and many millions of commits.

Using Sapling

To start using Sapling, see the Getting Started page for how to clone your existing Git repositories. Checkout the Overview for a peek at the various features. Coming from Git? Checkout the Git Cheat Sheet.

Sapling also comes with an Interactive Smartlog (ISL) web UI for seeing and interacting with your repository, as well as a VS Code integrated Interactive Smartlog.

The Sapling Ecosystem

Sapling SCM is comprised of three main components:

  • The Sapling client: The client-side sl command line and web interface for users to interact with Sapling SCM.
  • Mononoke: A highly scalable distributed source control server. (Not yet supported publicly.)
  • EdenFS: A virtual filesystem for efficiently checking out large repositories. (Not yet supported publicly.)

Sapling SCM's scalability goals are to ensure that all source control operations scale with the number of files in use by a developer, and not with the size of the repository itself. This enables fast, performant developer experiences even in massive repositories with millions of files and extremely long commit histories.

Sapling CLI

The Sapling CLI, sl, was originally based on Mercurial, and shares various aspects of the UI and features of Mercurial.

The CLI code can be found in the eden/scm subdirectory.

Mononoke

Mononoke is the server-side component of Sapling SCM.

While it is used in production within Meta, it currently does not build in an open source context and is not yet supported for external usage.

EdenFS

EdenFS is a virtual file system for managing Sapling checkouts.

While it is used in production within Meta, it currently does not build in an open source context and is not yet supported for external usage.

EdenFS speeds up operations in large repositories by only populating working directory files on demand, as they are accessed. This makes operations like checkout much faster, in exchange for a small performance hit when first accessing new files. This is quite beneficial in large repositories where developers often only work with a small subset of the repository at a time.

More detailed EdenFS design documentation can be found at eden/fs/docs/Overview.md.

Building the Sapling CLI

The Sapling CLI currently builds and runs on Linux, Mac, and Windows. It can be built by running make oss in the eden/scm directory and running the resulting sl executable.

Building the Sapling CLI requires Python 3.8, Rust, CMake, and OpenSSL for the main cli, and Node and Yarn for the ISL web UI.

License

See LICENSE.

sapling's People

Contributors

ahornby avatar bcully avatar bos avatar chadaustin avatar djc avatar durhamg avatar durin42 avatar evangrayk avatar flying-foozy avatar indygreg avatar krallin avatar kulshrax avatar madski-unity avatar markbt avatar marmoute avatar martinvonz avatar mgeisler avatar mitrandir77 avatar muirdm avatar quark-zju avatar seanfarley avatar simpkins avatar stanislavglebik avatar sunshowers avatar thomasah avatar wez avatar xavierd avatar yancouto avatar yuja avatar zzl0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sapling's Issues

help: How to choose the right blobstore type in different cases?

Thanks for the recent commits, which allowed me to build the code success.

I am very interested in the mononoke in the project, so I have invested in the research of this part of the code.

While reading the code, I found that mononoke provides many types of blobstores, including files, sql, s3, etc. And I have some questions about it:

  1. I saw a type called Manifold, but I didn't find any information about it on the internet (I guess it may be a k-v storage). Could you tell me what it is used for?
  2. Of course, it would be great if there is documentation about blobstore.toml config.

make install-oss rebuilds the entire project

Expectation

make oss produces the binaries, make install-oss puts them in the specified DESTDIR

Actual

make install-oss completely rebuilds the project even though make oss just built them

Repro:
I've packaged this project in the Arch AUR here https://aur.archlinux.org/packages/sapling-scm
The PKGBUILD performs a build by make PREFIX=/usr oss, then an install by make PREFIX=/usr DESTDIR="$pkgdir/" install-oss.
In the install stage, the project is fully rebuilt instead of just being copied to the destination.

Deprecation Warning: the imp module is deprecated in favour of importlib

Checkout of HEAD from today.

$ make oss
  SAPLING_OSS_BUILD=true HGNAME=sl \
  /usr/local/bin/python3 setup_with_version.py  \
  build_interactive_smartlog \
  build_py -c -d . \
  build_clib  \
  build_ext  -i \
  build_rust_ext -i -l  \
  build_pyzip -i \
  build_mo
/sapling/eden/scm/setup.py:31: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
  ...

Build fails with Python 3.11

This currently fails to build on Fedora Rawhide, which uses Python 3.11

/builddir/build/BUILD/sapling-20221115-080554-34470671/eden/scm/build/traitlets-4.3.3-py2.py3-none-any/traitlets/config/loader.py:795: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if len(key) is 1:
/builddir/build/BUILD/sapling-20221115-080554-34470671/eden/scm/build/traitlets-4.3.3-py2.py3-none-any/traitlets/config/loader.py:804: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if len(key) is 1:
edenscm/cext/mpatch.c: In function 'cpygetitem':
edenscm/cext/mpatch.c:66:3: warning: 'PyObject_AsCharBuffer' is deprecated [-Wdeprecated-declarations]
   66 |   if (PyObject_AsCharBuffer(tmp, &buffer, (Py_ssize_t*)&blen))
      |   ^~
In file included from /usr/include/python3.11/Python.h:100,
                 from edenscm/cext/mpatch.c:31:
/usr/include/python3.11/abstract.h:326:17: note: declared here
  326 | PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
      |                 ^~~~~~~~~~~~~~~~~~~~~
edenscm/cext/mpatch.c: In function 'patches':
edenscm/cext/mpatch.c:94:3: warning: 'PyObject_AsCharBuffer' is deprecated [-Wdeprecated-declarations]
   94 |   if (PyObject_AsCharBuffer(text, &in, &inlen))
      |   ^~
/usr/include/python3.11/abstract.h:326:17: note: declared here
  326 | PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
      |                 ^~~~~~~~~~~~~~~~~~~~~
edenscm/cext/dirs.c: In function '_addpath':
edenscm/cext/dirs.c:79:7: warning: 'ob_shash' is deprecated [-Wdeprecated-declarations]
   79 |       ((PyBytesObject*)key)->ob_shash = -1;
      |       ^
In file included from /usr/include/python3.11/bytesobject.h:62,
                 from /usr/include/python3.11/Python.h:50,
                 from edenscm/cext/dirs.c:18:
/usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
    7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
      |                                   ^~~~~~~~
edenscm/cext/dirs.c:88:18: error: lvalue required as left operand of assignment
   88 |     Py_SIZE(key) = pos;
      |                  ^
error: command '/usr/lib64/ccache/gcc' failed with exit code 1
make: *** [Makefile:75: oss] Error 1

Amend behavior is somewhat confusing, coming from git ecosystem

Hi I am currently trying this out. First of all this seems like a good approach :)

However, the amend command is confusing to me.

If I work on two bookmarks without push -> It works as expected and I can amend
If I push bookmark A to A -> A cannot be amended as expected. However B which (looking at github) isnt pushed now also fails with cannot amend public changesets

I am wondering if this is expected behavior or if this is not expected. I would have expected that bookmarks somewhat behave like branches until push was executed, as from the user view the commit in bookmark B was not yet made public.

Am I missing some obvious thing here? :) Also if this is expected what is the recommended approach for working on multiple PRs at the same time in a repo where you push them at different times?

FR: Support simultaneous Sapling and git repo

One limitation in adoption that I've noticed is that there's no apparent way to use Sapling in conjunction with a repo that relies on git-lfs https://git-lfs.github.com/

This doesn't really seem possible given that Sapling precludes an actual git repo, but maybe a workaround is enabling a simultanous git and sapling repo? This would make it easier to try out Sapling as well, since users could go into their existing repo and initialize it for use with Sapling.

unable to sl clone wezterm on a mac

I persistently hit too many open files errors during cloning/updating.

I'm running on an M1 macbook air, running macOS Ventura 13.0.1. I installed using brew and the bottle from the download/install instructions.

(the =sl thing here just tells zsh to run the sapling CLI instead of my existing sl shell function that gives me a smartlog output equivalent depending on the repo I'm in)

; =sl clone https://github.com/wez/wezterm.git wezterm-sl
remote: Enumerating objects: 57111, done.
remote: Counting objects: 100% (105/105), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 57111 (delta 49), reused 67 (delta 35), pack-reused 57006
Receiving objects: 100% (57111/57111), 281.16 MiB | 5.69 MiB/s, done.
Resolving deltas: 100% (39928/39928), done.
From https://github.com/wez/wezterm
* [new ref] 62e2e996da155ff5e922d6c52fd0797f0005cae4 -> remote/main
pulling submodule deps/harfbuzz/harfbuzz
abort: working copy is missing information or corrupt: Too many open files (os error 24)
14:46 took 1m:03s 255 wez@mba ~/wez-personal
; ulimit -n
1048576

I also tried with ulimit -n set to 2048576 without success.

When borked, I tried to resume the checkout, but it seems perma-borked:

; cd wezterm-sl
; sl go main
pulling submodule deps/freetype/libpng
abort: working copy is missing information or corrupt: "/Users/wez/wez-personal/wezterm-sl/.sl/store/gitmodules/0f54928fd0e2a3c3ad07da7da620492ae6da4b11/.sl/store/segments/v1/multimetalog/meta": when reading LogMetadata
in Log::sync
Log.dir = Filesystem("/Users/wez/wez-personal/wezterm-sl/.sl/store/gitmodules/0f54928fd0e2a3c3ad07da7da620492ae6da4b11/.sl/store/segments/v1/multimetalog")
in MultiLog::write_meta
Caused by 1 errors:
- Too many open files (os error 24)

I also tried the stronger version of raising the number of files:

; sudo sysctl kern.maxfiles=1048576
kern.maxfiles: 30720 -> 1048576

but I still get Too many open files errors during cloning.

Note that the repo, when cloned via git, has fewer than 100k files, including build artifacts under the rust targets directory, and the .git directory:

; find . | wc -l
   82893

I wonder if the reported error is miscategorized and isn't really about the number of files at all, but some other limit/constraint being shown without sufficient context?

I haven't tried sapling on my linux machine yet, so I don't know whether this is a mac-specific or wezterm-repo-specific issue.

Documentation for committemplate references HG:

Documentation in question:

  • run sl help config | sed -ne '/committemplate/,$ p' | head -n 30

I suspect this is wrong because running sl config | grep committemplate references SL: instead of HG:

Distro independent .tgz packages

Right now, it looks like there are dedicated packages for windows, mac, but for linux there are only .deb packages. It would be very useful to have distro agnostic .tgz release packages as well.

Add Travis CI support

It would be nice to have Travis CI support like several other FB open source repos (Folly, Thrift, etc.). Are there any plans to add it?

Git compatibility

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?

osxfuse 4.0 issue

Hello guys,
I saw your post here: osxfuse/osxfuse#742
Though I encourage support for the closed source project, this is a API that could soon reach complete blockage from Apple, I wanted to let you know that I can help you compile a previous "open source" version (3.8.3) of osxfuse for macOS 11.

Many people are having issues due to the lack of proper documentation.

Watchman integration for status

The sapling ISL page mentions it supports watchman, but as far as I can tell this doesn't apply to other commands, in particular sl status. On a large internal repo, I created .watchmanconfig but status still takes 9 secs (and I confirmed with watchman watch-list that there is no watch on the repo, it only gets created after sl web).

It would be great if sapling integrated something like https://git-scm.com/docs/git-fsmonitor--daemon to speed up status. (I presume the virtual FS has its own implementation which is not O(# files in repo), but until that's available or for those who want to keep things local.)

Memorable Commit Identifiers

In Sapling, is it feasible to eventually replace (or abstract away) traditional hexadecimal commit hashes (a3d66d91) with a more easy to remember alternative like Gfycat's AdjectiveAdjectiveAnimal Identifiers (JealousEssentialCrab)?

I'd love to help in such an effort.


Keywords to aid discovery: hard to remember, find commit, Procedural Generation, Naming Conventions, NippyKindLangur, animal, adjective, SHA-1, SHA-256, human-readable

Documenting ecosystem

Could you document about the ecosystem that can be used(or integrated) with this SCM?
Code Review tool?
Source Code Search/Navigation/Browsing/Inline edit? e.g. SourceGraph
CICD?
Bug tracking?

Git support: what is supported?

On #88, @fanzeyi mentions " The git support we have is very basic", but it's not very clear to me how one would be able to use eden with Git.

I understand eden was born as a virtual FS for mercurial and the names are all changing, which causes a bit of confusion when reading the docs. For clarity, in this issue I will call:

  • hg: The client. The binary people use to run thinks like hg status and hg commit.
  • eden: The virtual filesystem, which mounts a FUSE on machines able to download objects on demand.
  • mononoke: The server. The one serving and storing objects.

For someone that has a vanilla Git repo (i.e. official git client, remote on github). I considered the following:

eden only

Would it be possible to only use the virtual filesystem ?
I believe the answer is no, but I figured I'd ask it explicitly.
On https://github.com/facebookexperimental/eden/blob/main/eden/fs/docs/Process_State.md, edenFS exposes a thrift API that the vanilla git client does not speak.

In fact I tried to eden clone a git repo and the best I could do was (~/universe is my local vanilla git clone):

$ edenfsctl clone ~/universe ~/universe-eden
$ edenfsctl info
{
  "mount": "/Users/gabriel.russo/universe-eden",
  "scm_type": "git",
  "snapshot": "878577d1fac768214acc7db6fe5c1072e8d24090",
  "state_dir": "/Users/gabriel.russo/local/.eden/clients/universe-eden-3",
  "mount_protocol": "fuse"
}
$ mount
...
eden on /Users/gabriel.russo/universe-eden (macfuse_eden, synchronous)

What does this mean exactly? I can use all the files from the eden checkout just fine, but there is no .git folder there.

My best guess here is that things like git status would be even slower because it wouldn't be leveraging any of eden knowledge, just adding overhead to every filesystem call.

I couldn't figure out whether eden can read from github or any generic git server. Even without the hg client, is eden able to download objects on demand from a git server?

Edit: maybe one can use watchman in front of the vanilla git client? But not sure if this would cover all cases. git status would probably work, but other commands might still end up downloading the whole thing.

eden + hg

In order to actually make use of eden API's, the answer is probably to use hg. I didn't look at the code nor tried it, but my guess is that hg status would be smart enough to make a thrift call to eden and figure out what has changed much faster.

I'm also assuming that everything would just work for a git repository, and both hg and eden know what to do when they see a git object model. This is probably not true, or is it? To what extent?

eden + hg + mononoke

Lastly, if eden is not able to download objects from a generic git server, I figured one must also use mononoke. Is mononoke capable of hosting git or one must migrate the entire object model?

support for offline builds using system packages

Right now the sapling build downloads a number of packages from pypi and other places, which makes it unsuitable for packaging in most Linux distributions. Add support for disabling this logic and using system packages already installed on the host instead.

cannot find function `fstype_imp` in this scope

$ make oss
...
   Compiling iovec v0.1.4
   Compiling time v0.1.44
   Compiling fsinfo v0.1.0 (/data/git/sapling/eden/scm/lib/fsinfo)
error[E0425]: cannot find function `fstype_imp` in this scope
   --> lib/fsinfo/src/lib.rs:390:5
    |
390 |     fstype_imp(path).with_context(|| format!("Cannot determine filesystem type for {:?}", path))
    |     ^^^^^^^^^^ not found in this scope

   Compiling num_threads v0.1.6
   Compiling mio v0.7.14
warning: unused import: `anyhow::Context`
  --> lib/fsinfo/src/lib.rs:12:5
   |
12 | use anyhow::Context;
   |     ^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

For more information about this error, try `rustc --explain E0425`.
warning: `fsinfo` (lib) generated 1 warning
error: could not compile `fsinfo` due to previous error; 1 warning emitted
warning: build failed, waiting for other jobs to finish...
error: compilation of Rust target 'hgmain' failed
make: *** [Makefile:75: oss] Error 1

OS: FreeBSD 13.1-RELEASE-p3 amd64

Submitted stack links to wrong reviewstack URL for forks

This change #157 was submitted from changes in my fork of sapling, and the body of the PR links to https://reviewstack.dev/keith/sapling/pull/157, which doesn't load. It seems like it should link to https://reviewstack.dev/facebook/sapling/pull/157 instead

installer

the installation instructions require manually running commands. other version control tools such as git have installers. it would be very convenient if sapling had one too

sl blame hangs indefinitely on some files

Steps to reproduce:

sl clone https://github.com/julialang/julia
cd julia
SL_CONFIG_PATH=/dev/null sl blame sysimage.mk

After that, sl will sit silently at 100% CPU usage until you kill it.

With git, the analogous command works near instantly. (For reference, this was on commit ee0f3fc334a8 as I try it.)

I used SL_CONFIG_PATH=/dev/null to prevent config issues from possibly being the cause. I was able to reproduce this both an an M1 and an Intel Mac.

schemes extension is not working

Steps to reproduce:

Add the following lines to the user config file.

[schemes]
gh = https://github.com/
gh-ssh = ssh://[email protected]/

Then:

$ sl clone gh://facebook/sapling
destination directory: sapling
abort: repository https://github.com/facebook/sapling not found!
$ sl clone gh-ssh://facebook/sapling
destination directory: sapling
remote: Invalid command: 'hg -R facebook/sapling serve --stdio'
remote:   You appear to be using ssh to clone a git:// URL.
remote:   Make sure your core.gitProxy config option and the
remote:   GIT_PROXY_COMMAND environment variable are NOT set.
abort: command failed due to network error (see /var/folders/7l/1w2mnbsn50vf3swq5b59dx_00000gn/T/hg-error-details-ezrj_lzw for details)

Invalid config: no config for edenapi.url

I realize that this may be because some parts of sapling are not yet fully ported from Mercurial, but the extension is enabled by default, so I assume that it is not being deprecated.

Error: is not inside a repository

I'm raising this issue largely to document a potential misunderstanding that users of sapling might run into.

If you use sapling against an existing git clone, specifically one that was cloned using a traditional git client, sapling will not work. For example sl status in the repo will fail with:

abort: '/Users/me/src/somerepo' is not inside a repository, but this command requires a repository!
(use 'cd' to go to a directory inside a repository and try again)

This appears to happen because the sapling tool has its own equivalent of the .git/ sub-folder, named .sl/ which in this case is absent.

If you use sapling to clone the original repo then it all works fine.

sl web does not work well on Windows

On windows, the sl web command does open a web page but shows the following error:

Failed to fetch Diffs
Command failed with exit code 1: gh api graphql -f searchQuery=repo:AngelEzquerra/Arraymancer is:pr author:@me -F numToFetch=100 -f query= query YourPullRequestsQuery($searchQuery: String!, $numToFetch: Int!) { search(query: $searchQuery, type: ISSUE, first: $numToFetch) { nodes { ... on PullRequest { __typename number title state url comments { totalCount } commits(last: 1) { nodes { commit { checkSuites(first: 100) { nodes { conclusion status } } } } } } } } } 'gh' is not recognized as an internal or external command, operable program or batch file.
Error: Command failed with exit code 1: gh api graphql -f searchQuery=repo:AngelEzquerra/Arraymancer is:pr author:@me -F numToFetch=100 -f query=
    query YourPullRequestsQuery($searchQuery: String!, $numToFetch: Int!) {
  search(query: $searchQuery, type: ISSUE, first: $numToFetch) {
    nodes {
      ... on PullRequest {
        __typename
        number
        title
        state
        url
        comments {
          totalCount
        }
        commits(last: 1) {
          nodes {
            commit {
              checkSuites(first: 100) {
                nodes {
                  conclusion
                  status
                }
              }
            }
          }
        }
      }
    }
  }
}
    
'gh' is not recognized as an internal or external command,
operable program or batch file.
    at e.exports (C:\Program Files\Sapling\edenscm-isl\isl-server\dist\387.js:1:18531)
    at C:\Program Files\Sapling\edenscm-isl\isl-server\dist\387.js:1:15713
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

I'm assuming that gh is the github CLI tool which is installed and on the path.
Another problem is that I am running sl web on a repo called "poc" but the error message references a different repo (Arraymancer).

Reviewstack broken on Firefox

Repro:

  • Using a recent firefox navigate to https://reviewstack.dev/
  • Click on Authorize ReviewStack to access GitHub
  • Notice the pop up (and accept if this is the first time through)
  • Notice that Github has added permissions from the flow
  • The browser window now reads: "Failed to delete data. Please close all other instances of ReviewStack, refresh this page, and press Logout again."
  • Notice through dev tools that that indexdb and cookies are empty. Local storage has dark mode selection.

Console Errors:

Uncaught (in promise) TypeError: e.databases is not a function
    set gitHubCredentials.ts:154
    n gitHubCredentials.ts:145
    set gitHubCredentials.ts:122
    set [email protected]:1
    setNodeValue [email protected]:1
    applyAction [email protected]:1
    applyActionsToStore [email protected]:1
    replaceState [email protected]:1
    applyActionsToStore [email protected]:1
    queueOrPerformStateUpdate [email protected]:1
    setRecoilValue [email protected]:1
    useSetRecoilState [email protected]:1
    u NetlifyLoginDialog.tsx:29
    lj [email protected]:223
    kj [email protected]:34
    nj [email protected]:34
    gh [email protected]:62
    Xg [email protected]:63
    Ce [email protected]:72
    Tf [email protected]:189
    wg [email protected]:32
    Ce [email protected]:65
    Be [email protected]:47
    Aj [email protected]:46
gitHubCredentials.ts:154:36

That line of code reads:

const databases = await indexedDB.databases();

Going to: https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory/databases
Leads us to: https://bugzilla.mozilla.org/show_bug.cgi?id=934640

Seems like the enumeration of databases isn't implemented for FF.

GitLab support

It would be awesome if Sapling could be generalized to work with other git hosting providers. According to JetBrains 2020 survey, 77% of respondents regularly use GitHub, 40% GitLab, and 25% BitBucket

I tried to use Sapling with a GitLab repo and it looks like GitHub is a pretty deeply baked in assumption (for URL paths etc).

For example, sl pr failed at url.host == "[github.com](http://github.com/)" check

Aside: Thanks for open-sourcing Sapling and ReviewStack! I'm really excited for the simplified workflow for managing stacks of small commits!

`fatal: fetch-pack: invalid index-pack` on large repos

% sl clone https://github.com/llvm/llvm-project.git
remote: Enumerating objects: 5061204, done.
remote: Counting objects: 100% (6460/6460), done.
remote: Compressing objects: 100% (587/587), done.
fatal: fetch-pack: invalid index-pack output3.45 MiB | 11.47 MiB/s
% sl clone https://github.com/apple/swift
remote: Enumerating objects: 1267322, done.
remote: Counting objects: 100% (55/55), done.
remote: Compressing objects: 100% (39/39), done.
fatal: fetch-pack: invalid index-pack output7.25 MiB | 11.12 MiB/s

Once cloned the repos are empty beside from a .sl directory that does have some contents

Error cloning repos with submodules

Hi there!

First, thanks for this great tool!

I have a repository which has a few git submodules. When I clone the repository, the submodules seem to want to be cloned automatically (I actually prefer that, so I'm fine with that). The issue is only the first submodule gets cloned, and an error comes up

pulling submodule forge-std
abort: working copy is missing information or corrupt: "/Users/dteiml/p/hacker-dom/sapling-git-submodules-sl/.sl/store/gitmodules/c40f5e035560142833917ec851ed36f37d9ab2ad/.sl/store/segments/v1/iddag/log": cannot open for mmap
in log::OpenOptions::open(SharedMeta { path: Filesystem("/Users/dteiml/p/hacker-dom/sapling-git-submodules-sl/.sl/store/gitmodules/c40f5e035560142833917ec851ed36f37d9ab2ad/.sl/store/segments/v1/iddag"), meta: Mutex { data: LogMetadata { primary_len: 12, indexes: {}, epoch: 15682642694474209563 }, poisoned: false, .. } })
in multi::OpenOptions::open
Caused by 1 errors:
- Too many open files (os error 24)

I made a repo to illustrate this

image

^ note that the submodule openzeppelin-contracts is missing from here

Context

image

Build fail in mac m1.

cmake version: 3.23.1

cargo version: 1.62.1 (a748cf5a3 2022-06-08)

gcc version:
Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: arm64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

python version: Python-3.9.12

It seems some pack missing with arm64 architecture. Have someone meet this condition?

Error message:

Compiling conch_parser v0.1.0 (/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/edenscmnative/conch_parser) error: linking with cc` failed: exit status: 1
|
= note: "cc" "-Wl,-exported_symbols_list,/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/rustcLT40Vv/list" "-arch" "arm64" "/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/rustcLT40Vv/symbols.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.0.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.1.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.10.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.11.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.12.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.13.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.14.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.15.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.2.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.3.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.4.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.5.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.6.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.7.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.8.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.conch_parser.0d4b29d4-cgu.9.rcgu.o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/conch_parser.4wq1scre3n5ipfwm.rcgu.o" "-L" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps" "-L" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libcpython-943d1c03997aec3e.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libnum_traits-ccd7646de8deaf2a.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libpython3_sys-6f5f71de78c709c1.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/liblibc-5393619ade5487bd.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libconch_parser-effcb1051c82d32e.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libvoid-0c61b273f46f4f10.rlib" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/build/eden_scm/cargo-target/release/deps/libserde-7103e6e1913ceb45.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libstd-96bcd43fbab7210e.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libpanic_unwind-c76204c84e2bdd36.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libobject-22c79ce7e7a117f9.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libmemchr-8a0faeeb79b74416.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libaddr2line-3e68272b63a043a8.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libgimli-8e8aa5d009363d47.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_demangle-1a52e1e1da75647b.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libstd_detect-c766691bab66dee0.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libhashbrown-75861b2880f42265.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libminiz_oxide-e98470d990112a05.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libadler-6dd4b4a4883a146d.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_std_workspace_alloc-5d9f99d949214d3d.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libunwind-025d9c8fee60e878.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcfg_if-2c1c815cf5983b09.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/liblibc-5aa601fb176a4c50.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/liballoc-6d4b88f6eb69af36.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_std_workspace_core-a46a57c3613359bf.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcore-09ea13cd3ffe8b3e.rlib" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcompiler_builtins-78b101bb38333bc9.rlib" "-liconv" "-lSystem" "-lresolv" "-lc" "-lm" "-liconv" "-L" "/Users/hecanwei/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "-o" "/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/repos/github.com-facebookexperimental-eden.git/eden/scm/build/cargo-target/release/deps/libconch_parser.dylib" "-Wl,-dead_strip" "-dynamiclib" "-Wl,-dylib" "-nodefaultlibs"
= note: Undefined symbols for architecture arm64:
"_PyTuple_SetItem", referenced from:
cpython::objects::tuple::PyTuple::new::h733952f911b9db5d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.13.rcgu.o)
"_PyExc_TypeError", referenced from:
cpython::err::PyErr::new::hf69d1733b38f7125 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
_$LT$cpython..err..PyErr$u20$as$u20$core..convert..From$LT$cpython..python..PythonObjectDowncastError$GT$$GT$::from::he5c3248ef4ea1c2c in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
"PyEval_InitThreads", referenced from:
cpython::py_module_initializer_impl::h698d9685334ea435 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
std::sync::once::Once::call_once::
$u7b$$u7b$closure$u7d$$u7d$::hd97d5f0740afa694 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h99de075706e7ddc1 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
"_PyModule_Create2", referenced from:
cpython::py_module_initializer_impl::h698d9685334ea435 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"_PyModule_Type", referenced from:
cpython::py_module_initializer_impl::h698d9685334ea435 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"_PyType_IsSubtype", referenced from:
cpython::py_module_initializer_impl::h698d9685334ea435 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"__Py_TrueStruct", referenced from:
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_bool::h74c2d4e328c3f15c in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyDict_Size", referenced from:
cpython::objects::dict::PyDict::items::h41f273794c1da291 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
cpython::argparse::parse_args::h1397c7efa2a5f578 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.7.rcgu.o)
"PyEval_ThreadsInitialized", referenced from:
std::sync::once::Once::call_once::
$u7b$$u7b$closure$u7d$$u7d$::hd97d5f0740afa694 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h99de075706e7ddc1 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
"_PyDict_Next", referenced from:
cpython::objects::dict::PyDict::items::h41f273794c1da291 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"_PyErr_Print", referenced from:
cpython::err::panic_after_error::h9e3dd7fad9443cf2 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::objects::string::PyString::to_string_lossy::hbdfc91461864acc8 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.3.rcgu.o)
"_PyDict_GetItem", referenced from:
cpython::objects::dict::PyDict::get_item::hb2afdc76a78fa7f5 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"PyGILState_Ensure", referenced from:
core::ptr::drop_in_place$LT$cpython..err..PyErr$GT$::h423cebe2a875a87d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$cpython..objects..list..PyList$GT$::hd3f445ea8828e399 (.llvm.7967917970511237162) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$core..option..Option$LT$cpython..objects..object..PyObject$GT$$GT$::hdb73a2be10864399 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
cpython::objectprotocol::
$LT$impl$u20$core..fmt..Debug$u20$for$u20$cpython..objects..object..PyObject$GT$::fmt::h8be5f2085e1f7e78 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
_$LT$cpython..objects..object..PyObject$u20$as$u20$core..ops..drop..Drop$GT$::drop::h13a09b5c7015c469 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
"_PyErr_SetString", referenced from:
cpython::function::handle_panic::h7b719d7f37b965d0 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.9.rcgu.o)
"_PyCFunction_NewEx", referenced from:
cpython::function::py_fn_impl::h6c44602bc6c04e92 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.9.rcgu.o)
"__Py_NoneStruct", referenced from:
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_none::h235486224fe7f722 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyUnicode_FromStringAndSize", referenced from:
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_str::h9cb40a273ff86eb2 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
cpython::objects::dict::PyDict::get_item::hb2afdc76a78fa7f5 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
cpython::err::PyErr::new::hf69d1733b38f7125 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
_$LT$cpython..err..PyErr$u20$as$u20$core..convert..From$LT$cpython..python..PythonObjectDowncastError$GT$$GT$::from::he5c3248ef4ea1c2c in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::objects::string::PyString::new::h100ca04e114ebfae in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.3.rcgu.o)
"__PyUnicode_Ready", referenced from:
cpython::objects::string::PyString::to_string_lossy::hbdfc91461864acc8 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.3.rcgu.o)
"__Py_FalseStruct", referenced from:
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_bool::h74c2d4e328c3f15c in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyExc_SystemError", referenced from:
$LT$cpython..serde..ser..BuildDict$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h70c143d7f0a8af52 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
cpython::function::handle_panic::h7b719d7f37b965d0 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.9.rcgu.o)
cpython::err::PyErr::fetch::h66fbdb886ed1c290 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::err::result_cast_from_owned_ptr::h94d8165167569a6d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::err::result_cast_from_owned_ptr::hf7cc883dff230e10 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::objects::string::
$LT$impl$u20$cpython..conversion..FromPyObject$u20$for$u20$alloc..borrow..Cow$LT$str$GT$$GT$::extract::h0d69208ecfed68fd in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.12.rcgu.o)
cpython::argparse::parse_args::h1397c7efa2a5f578 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.7.rcgu.o)
...
"_PyList_New", referenced from:
_$LT$cpython..serde..ser..BuildList$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h8872541d7142ec60 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyTuple_New", referenced from:
cpython::objects::tuple::PyTuple::new::h733952f911b9db5d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.13.rcgu.o)
"_PyList_SetItem", referenced from:
_$LT$cpython..serde..ser..BuildList$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h8872541d7142ec60 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyDict_SetItem", referenced from:
_$LT$cpython..serde..ser..BuildDict$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h70c143d7f0a8af52 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"_PyErr_Restore", referenced from:
std::panicking::try::h8fdcfba82b02259b in conch_parser.conch_parser.0d4b29d4-cgu.11.rcgu.o
cpython::py_module_initializer_impl::h698d9685334ea435 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.11.rcgu.o)
"PyErr_Fetch", referenced from:
$LT$cpython..serde..ser..BuildDict$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h70c143d7f0a8af52 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
cpython::err::PyErr::fetch::h66fbdb886ed1c290 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::err::result_cast_from_owned_ptr::h94d8165167569a6d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::err::result_cast_from_owned_ptr::hf7cc883dff230e10 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.1.rcgu.o)
cpython::objects::string::
$LT$impl$u20$cpython..conversion..FromPyObject$u20$for$u20$alloc..borrow..Cow$LT$str$GT$$GT$::extract::h0d69208ecfed68fd in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.12.rcgu.o)
cpython::argparse::parse_args::h1397c7efa2a5f578 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.7.rcgu.o)
"PyObject_Repr", referenced from:
cpython::objectprotocol::
$LT$impl$u20$core..fmt..Debug$u20$for$u20$cpython..objects..object..PyObject$GT$::fmt::h8be5f2085e1f7e78 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
"__Py_Dealloc", referenced from:
std::panicking::try::h8fdcfba82b02259b in conch_parser.conch_parser.0d4b29d4-cgu.11.rcgu.o
cpython::objects::module::PyModule::add::h4548a23a7608bbab in conch_parser.conch_parser.0d4b29d4-cgu.11.rcgu.o
core::ptr::drop_in_place$LT$cpython..err..PyErr$GT$::h423cebe2a875a87d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$cpython..objects..list..PyList$GT$::hd3f445ea8828e399 (.llvm.7967917970511237162) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$core..option..Option$LT$cpython..objects..object..PyObject$GT$$GT$::hdb73a2be10864399 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
cpython::objectprotocol::
$LT$impl$u20$core..fmt..Debug$u20$for$u20$cpython..objects..object..PyObject$GT$::fmt::h8be5f2085e1f7e78 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
_$LT$cpython..objects..object..PyObject$u20$as$u20$core..ops..drop..Drop$GT$::drop::h13a09b5c7015c469 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
...
"Py_InitializeEx", referenced from:
std::sync::once::Once::call_once::
$u7b$$u7b$closure$u7d$$u7d$::hd97d5f0740afa694 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h99de075706e7ddc1 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
"_PyLong_FromLong", referenced from:
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_i64::hc475f7565d4f39e3 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_u16::h7a0b3f03f338127b in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
_$LT$$RF$cpython..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$::serialize_u32::h96e23dccf0c1c4b0 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"PyExc_ValueError", referenced from:
cpython::objects::string::
$LT$impl$u20$cpython..conversion..RefFromPyObject$u20$for$u20$str$GT$::with_extracted::h037d00282e2a377e in conch_parser.conch_parser.0d4b29d4-cgu.15.rcgu.o
"PyUnicode_AsUTF8AndSize", referenced from:
cpython::objects::string::
$LT$impl$u20$cpython..conversion..FromPyObject$u20$for$u20$alloc..borrow..Cow$LT$str$GT$$GT$::extract::h0d69208ecfed68fd in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.12.rcgu.o)
cpython::argparse::parse_args::h1397c7efa2a5f578 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.7.rcgu.o)
"_PyObject_SetAttr", referenced from:
cpython::objects::module::PyModule::add::h4548a23a7608bbab in conch_parser.conch_parser.0d4b29d4-cgu.11.rcgu.o
"Py_IsInitialized", referenced from:
std::sync::once::Once::call_once::
$u7b$$u7b$closure$u7d$$u7d$::hd97d5f0740afa694 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h99de075706e7ddc1 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
"_PyDict_New", referenced from:
_$LT$cpython..serde..ser..BuildDict$u20$as$u20$cpython..serde..ser..PyCollectItems$GT$::collect_items::h70c143d7f0a8af52 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.10.rcgu.o)
"PyEval_SaveThread", referenced from:
std::sync::once::Once::call_once::
$u7b$$u7b$closure$u7d$$u7d$::hd97d5f0740afa694 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h99de075706e7ddc1 (.llvm.6623213785927367396) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.6.rcgu.o)
"PyGILState_Release", referenced from:
core::ptr::drop_in_place$LT$cpython..err..PyErr$GT$::h423cebe2a875a87d in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$cpython..pythonrun..GILGuard$GT$::h2706186acf7d6cf0 (.llvm.7967917970511237162) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$cpython..objects..list..PyList$GT$::hd3f445ea8828e399 (.llvm.7967917970511237162) in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
core::ptr::drop_in_place$LT$core..option..Option$LT$cpython..objects..object..PyObject$GT$$GT$::hdb73a2be10864399 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
cpython::objectprotocol::
$LT$impl$u20$core..fmt..Debug$u20$for$u20$cpython..objects..object..PyObject$GT$::fmt::h8be5f2085e1f7e78 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
_$LT$cpython..objects..object..PyObject$u20$as$u20$core..ops..drop..Drop$GT$::drop::h13a09b5c7015c469 in libcpython-943d1c03997aec3e.rlib(cpython-943d1c03997aec3e.cpython.68574e34-cgu.8.rcgu.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: could not compile conch_parser due to previous error
error: compilation of Rust target 'conch_parser' failed
make: *** [getdepsbuild] Error 1
Command '['make', '-j10', 'getdepsbuild', 'PREFIX=/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/installed/eden_scm', 'prefix=/private/var/folders/yq/l95kq0w944bc6d_nfcwnlhhw0000gn/T/fbcode_builder_getdeps-ZUsersZhecanweiZProjectZedenZbuildZfbcode_builder/installed/eden_scm']' returned non-zero exit status 2.
!! Failed`

OSS Help

Hi, really like the project!

I would be interested in helping to get the oss version of this to build and run.

Wanted to check and see if maintainers would be open to reviewing and maybe providing direction on prs and changes.
Also wanted to check and see if it will be feasible to get an oss version of this working or if there are internal blockers to this happening (ex: key dependencies that are not open source yet and no workaround is desired).

hopeful to see an oss version of this running!

Documentation hints refer to fburl links

Example:

$ sl branch
default
hint[branch-command-deprecate]: 'sl branch' command does not do what you want, and is being removed. It always prints 'default' for now. Check fburl.com/why-no-named-branches for details.

Basic Install and setup documentation

Would it be possible to add some basic Install and setup documentation.

The main readme build steps and the eden/docs are good.

If there was a basic or recommended install and setup doc that could help bridge the gap between the build and the config docs that would be very useful.

I am able to build the project and create the eden.zip file and use basic commands like eden help but when running
$ eden start
I get the error:
error: unable to find edenfs executable

Any install and setup documentation or comments would be greatly appreciated.

Thank you

eden commit: c2944f2
OS: Ubuntu 18.04.2 LTS

ISL suggests `update --clean`, which doesn't exist

Steps to reproduce:

  1. Make some uncommited changes.
  2. Try to Goto a different commit in the VS Code ISL.

Actual behavior:

See this message:

(commit, shelve, update --clean to discard all your changes, or update --merge to merge them)

Screen Shot 2022-11-15 at 15 16 50

But sl update --clean doesn't work; it looks like sl goto is the command instead. Perhaps update should be an alias for goto? (That's what Jujutsu does IIRC.)

Expected behavior:

All suggested options are valid sl commands.

Multiple working tree support

I like to have multiple working trees checked out simultaneously to be able to read/build them in parallel (and keep build outputs separate etc). Git makes this very easy with worktrees. Is anything similar supported with sapling? I don't see it mentioned in the docs so I assume answer is no, but want to double check (and whether this might be considered on the roadmap).

An equivalent to git clone --reference would be a reasonable alternative but that doesn't seem to be supported either.

Phabricator Support?

Ex Facebooker here. I'm extremely excited to see this tool and would love to introduce it to my current tech stack which uses git, arc and Phabricator.

Since sapling supports commit submission, I want to ask if there's any plan for sapling to work with Phabricator (like the certain maritime animal), which supports stack natively.

Using on existing local git repo

Wanting to check out Sapling, I installed it and tried to run it on a local (already cloned) repo, it didn't work.
It's easier for me to start using it on existing repos instead of re-cloning all the repos with Sapling. So I guess I'm asking if that is supported, or not. I tried looking it up but couldn't find anything about it in the docs.

feature request: tag support

In my organisation, we use git tags for operation things. For instance, a git tag might trigger our CI create the deployment.

As far as I can tell, sapling doesn't provide any tagging functionality and I can't use regular git tag either

How to deep clone a repo?

I would definitely prefer to ask this sort of question in an IRC channel or something, but this is all I can find. Is it possible to do a deep clone of an existing git repo instead of just cloning the main branch? Or is the intended path to use git to do that, then clone the local git repo with sapling?

Support for self-hosted GHE

I did some initial testing with a selfhosted Github Enterprise and it seems both sl pr and sl ghstack both fail to see this as a Github repo.

sl pr fails with a not a Git repo message (also should this be not a Github repo?`

sl pr
abort: not a Git repo

Seems like the error is coming from here

def submit(ui, repo, *args, **opts):
"""Create or update GitHub pull requests."""
if not github_repo_util.is_github_repo(repo):
raise error.Abort(_("not a Git repo"))
return asyncio.run(update_commits_in_stack(ui, repo))

Which calls

def is_github_repo(repo) -> bool:
"""Create or update GitHub pull requests."""
if not git.isgitpeer(repo):
return False
try:
return repo.ui.paths.get("default", "default-push").url.host == "github.com"
except AttributeError: # ex. paths.default is not set
return False

Seems like it's hard-coded to just github.com .

sl ghstack has a similar failure and produced a stack trace saying it cannot find the repo owner / name:

$ sl ghstack
** Sapling SCM (version 20221115.080554.34470671) has crashed:
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/__init__.py", line 106, in run
    dispatch.run(args, fin, fout, ferr, config)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 161, in run
    status = (dispatch(req) or 0) & 255
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 503, in dispatch
    ret = _runcatch(req)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 712, in _runcatch
    return _callcatch(ui, req, _runcatchfunc)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 721, in _callcatch
    return scmutil.callcatch(ui, req, func)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/scmutil.py", line 147, in callcatch
    return func()
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 683, in _runcatchfunc
    return _dispatch(req)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 1218, in _dispatch
    ret = runcommand(
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/undo.py", line 148, in _runcommandwrapper
    result = orig(lui, repo, cmd, fullargs, *args)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/journal.py", line 80, in runcommand
    return orig(lui, repo, cmd, fullargs, *args)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/sparse.py", line 504, in _tracktelemetry
    res = runcommand(lui, repo, *args)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/copytrace.py", line 173, in _runcommand
    return orig(lui, repo, cmd, fullargs, ui, *args, **kwargs)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 913, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 1259, in _runcommand
    return cmdfunc()
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/dispatch.py", line 1217, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/util.py", line 1285, in check
    return func(*args, **kwargs)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/ghstack/__init__.py", line 50, in ghstack_command
    return submit_cmd(ui, repo, *args, **opts)
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/edenscm/ext/ghstack/__init__.py", line 103, in submit_cmd
    ghstack.submit.main(
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ghstack/submit.py", line 136, in main
    repo = ghstack.github_utils.get_github_repo_info(
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ghstack/github_utils.py", line 65, in get_github_repo_info
    name_with_owner = get_github_repo_name_with_owner(
  File "/opt/homebrew/Cellar/[email protected]/3.8.15/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ghstack/github_utils.py", line 41, in get_github_repo_name_with_owner
    raise RuntimeError(
RuntimeError: Couldn't determine repo owner and name from url: https://github.notfacebook.com/brandonbennett/test.git

Project status

This is a blatant clone of piper and I love it.

How far along is this?

Unable to build eden

I've spent maybe an hour or two trying to build eden, with no success.

The first issue was that it was not entirely clear how to build eden. The root README.md says to use build.sh to build EdenFS, but doesn't mention anything about building the rest of eden, which are the bits I'm interested in. So I looked in eden/scm, but the README there seems to be leftover from hg, and trying to build something there gave me an error saying something like "this needs to be built using getdeps.py", so I assumed maybe the root build.sh builds everything and the README is stale.

So running build.sh, I got a compilation error in eden/fs/config/EdenConfig.h, due to common/rust/shed/hostcaps/hostcaps.h not existing. So I cloned the rust-shed repo and copied it under common/rust.

Then I got a bunch more compilation errors because the Cargo.toml files request the master branch of the rust-shed repo, which doesn't exist. I rewrote all these from "master" to "main".

Then I got multiple rust build failures on mod fb; lines, presumably because --features fb was being passed to cargo/rustc (which I think should be only be used for internal builds?) first in the rust-shed code I copied into the tree, then elsewhere (don't remember where). I couldn't quickly find why the feature was set, and ./build.sh --no-facebook-internal didn't help, so I replaced all "feature = "fb" by "feature = "zz" to deactivate all this and proceed.

Then I got a build error because eden/scm/lib/third-party/rust/fbthrift/Cargo.toml mentions ../../../../../../thrift/lib/rust, which does not exist. I replaced it with ../../../../../.././external/fbthrift/thrift/lib/rust, which stopped this error but resulting in multiple new ones, so I don't know if that was the right fix:

  • external/fbthrift/thrift/lib/rust/Cargo.toml mentions the support_old_nightly feature of async-trait, which apparently doesn't exist. I removed that.

  • then I got rust errors in external/fbthrift/thrift/lib/rust/src/processor.rs in the NullServiceProcessor implemenation of ServiceProcessor, because the unused parameters of handle_methods are not Send/Sync (??). My rust compiler is already as up to date as it can. So I made everything relevant Send/Sync.

  • finally, I ran into screenfuls of errors like this:

error[E0433]: failed to resolve: could not find `help` in `fbthrift`
   --> ~/eden/eden/scm/lib/thrift-types/eden_config/src/lib.rs:105:25
    |
105 |             ::fbthrift::help::enum_display(VARIANTS_BY_NUMBER, fmt, self.0)
    |                         ^^^^ could not find `help` in `fbthrift`

error[E0433]: failed to resolve: could not find `help` in `fbthrift`
   --> ~/eden/eden/scm/lib/thrift-types/eden_config/src/lib.rs:125:25
    |
125 |             ::fbthrift::help::enum_from_str(VARIANTS_BY_NAME, string, "ConfigSource").map(ConfigSource)
    |                         ^^^^ could not find `help` in `fbthrift`

That's where I'm stuck currently. Any idea how to make progress here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.