sapling/eden/scm
Jun Wu 6945873500 git: share nested submodules with same URL
Summary:
Repos like pytorch uses nested submodules, and same dependency can appear in
different nested submodules. For example, `pybind11` has 4 copies:

  pytorch-git/.git % find | grep 'pybind11$'
  ./modules/third_party/onnx/modules/third_party/pybind11
  ./modules/third_party/onnx-tensorrt/modules/third_party/onnx/modules/third_party/pybind11
  ./modules/third_party/pybind11
  ./modules/third_party/tensorpipe/modules/third_party/pybind11

Practically, this reduces pytorch's `.hg/store/gitmodules` size from 506MB
to 442MB. Note the git version of `.git/modules` takes 862MB. That might be
caused by git fetching `HEAD` or the `branch` config specified in `.gitmodules`
instead of just fetching the commit needed to checkout submodules.

Clonging them in different places is a waste of space. Let's make nested repos
with same URLs share a same backing repo.

Reviewed By: DurhamG

Differential Revision: D33518828

fbshipit-source-id: 1c091bf41c263d701eecdc266ba49723b3ad5eec
2022-01-20 10:21:49 -08:00
..
contrib checkcode: remove old-style class check 2022-01-20 10:21:48 -08:00
distutils_rust codemod: update license headers 2022-01-05 14:43:32 -08:00
doc codemod: update license headers 2022-01-05 14:43:32 -08:00
edenscm git: share nested submodules with same URL 2022-01-20 10:21:49 -08:00
edenscmnative manifest-tree: do not crash seeing git submodules 2022-01-20 10:21:46 -08:00
exec codemod: update license headers 2022-01-05 14:43:32 -08:00
hgcache_size_logger codemod: update license headers 2022-01-05 14:43:32 -08:00
i18n codemod: update license headers 2022-01-05 14:43:32 -08:00
lib git: respect selective pull 2022-01-20 10:21:48 -08:00
newdoc fix a couple of typos 2022-01-10 16:13:22 -08:00
pystubs codemod: update license headers 2022-01-05 14:43:32 -08:00
slides codemod: update license headers 2022-01-05 14:43:32 -08:00
tests git: share nested submodules with same URL 2022-01-20 10:21:49 -08:00
.editorconfig Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
.flake8 debugrebuildchangelog: support rebuild with lazy segmented changelog 2021-05-26 19:00:01 -07:00
.gitignore gitignore: track Makefile under scm 2021-03-04 08:52:27 -08:00
.rustfmt.toml rustfmt: set group_imports to StdExternalCrate 2021-10-19 11:07:24 -07:00
COPYING
fsprobe.sh codemod: update license headers 2022-01-05 14:43:32 -08:00
gen_version.py codemod: update license headers 2022-01-05 14:43:32 -08:00
hgeditor
Makefile codemod: update license headers 2022-01-05 14:43:32 -08:00
README.rst
setup.py codemod: update license headers 2022-01-05 14:43:32 -08:00

Mercurial
=========

Mercurial is a fast, easy to use, distributed revision control tool
for software developers.

Basic install::

 $ make            # see install targets
 $ make install    # do a system-wide install
 $ hg debuginstall # sanity-check setup
 $ hg              # see help

Running without installing::

 $ make local      # build for inplace usage
 $ ./hg --version  # should show the latest version

See https://mercurial-scm.org/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.