##// END OF EJS Templates
dirstate.status: assign members one by one instead of unpacking the tuple...
dirstate.status: assign members one by one instead of unpacking the tuple With this patch, hg status and hg diff regain their previous speed. The following tests are run against a working copy with over 270,000 files. Here, 'before' means without this or the previous patch applied. Note that in this case `hg perfstatus` isn't representative since it doesn't take dirstate parsing time into account. $ time hg status # best of 5 before: 2.03s user 1.25s system 99% cpu 3.290 total after: 2.01s user 1.25s system 99% cpu 3.261 total $ time hg diff # best of 5 before: 1.32s user 0.78s system 99% cpu 2.105 total after: 1.27s user 0.79s system 99% cpu 2.066 total

File last commit:

r21041:a2cc3c08 default
r21810:4b2ebd31 default
Show More
subrepos.txt
146 lines | 6.0 KiB | text/plain | TextLexer
Patrick Mezard
Add subrepos help topic...
r12828 Subrepositories let you nest external repositories or projects into a
parent Mercurial repository, and make commands operate on them as a
Matt Mackall
subrepo: add git to the help topic
r15213 group.
Mercurial currently supports Mercurial, Git, and Subversion
subrepositories.
Patrick Mezard
Add subrepos help topic...
r12828
Subrepositories are made of three components:
1. Nested repository checkouts. They can appear anywhere in the
Matt Mackall
subrepo: add git to the help topic
r15213 parent working directory.
Patrick Mezard
Add subrepos help topic...
r12828
FUJIWARA Katsunori
doc: add description about location of management files for subrepo
r16503 2. Nested repository references. They are defined in ``.hgsub``, which
should be placed in the root of working directory, and
Patrick Mezard
Add subrepos help topic...
r12828 tell where the subrepository checkouts come from. Mercurial
Takumi IINO
help: fix literal block syntax
r17454 subrepositories are referenced like::
Patrick Mezard
Add subrepos help topic...
r12828
path/to/nested = https://example.com/nested/repo/path
Takumi IINO
help: fix literal block syntax
r17454 Git and Subversion subrepos are also supported::
Matt Mackall
subrepo: add git to the help topic
r15213
path/to/nested = [git]git://example.com/nested/repo/path
path/to/nested = [svn]https://example.com/nested/trunk/path
Patrick Mezard
Add subrepos help topic...
r12828 where ``path/to/nested`` is the checkout location relatively to the
parent Mercurial root, and ``https://example.com/nested/repo/path``
is the source repository path. The source can also reference a
Matt Mackall
subrepo: add git to the help topic
r15213 filesystem path.
Patrick Mezard
Add subrepos help topic...
r12828
Note that ``.hgsub`` does not exist by default in Mercurial
repositories, you have to create and add it to the parent
repository before using subrepositories.
FUJIWARA Katsunori
doc: add description about location of management files for subrepo
r16503 3. Nested repository states. They are defined in ``.hgsubstate``, which
is placed in the root of working directory, and
Patrick Mezard
Add subrepos help topic...
r12828 capture whatever information is required to restore the
subrepositories to the state they were committed in a parent
repository changeset. Mercurial automatically record the nested
repositories states when committing in the parent repository.
.. note::
Simon Heimberg
help: remove last occurrences of ".. note::" without two newlines...
r20532
Patrick Mezard
Add subrepos help topic...
r12828 The ``.hgsubstate`` file should not be edited manually.
Adding a Subrepository
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ======================
Patrick Mezard
Add subrepos help topic...
r12828
If ``.hgsub`` does not exist, create it and add it to the parent
repository. Clone or checkout the external projects where you want it
to live in the parent repository. Edit ``.hgsub`` and add the
subrepository entry as described above. At this point, the
subrepository is tracked and the next commit will record its state in
``.hgsubstate`` and bind it to the committed changeset.
Synchronizing a Subrepository
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 =============================
Patrick Mezard
Add subrepos help topic...
r12828
Subrepos do not automatically track the latest changeset of their
sources. Instead, they are updated to the changeset that corresponds
with the changeset checked out in the top-level changeset. This is so
developers always get a consistent set of compatible code and
libraries when they update.
Thus, updating subrepos is a manual process. Simply check out target
subrepo at the desired revision, test in the top-level repo, then
commit in the parent repository to record the new combination.
Deleting a Subrepository
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ========================
Patrick Mezard
Add subrepos help topic...
r12828
Wagner Bruna
help: correct tip about deleting a subrepository...
r12860 To remove a subrepository from the parent repository, delete its
reference from ``.hgsub``, then remove its files.
Patrick Mezard
Add subrepos help topic...
r12828
Interaction with Mercurial Commands
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ===================================
Patrick Mezard
Add subrepos help topic...
r12828
:add: add does not recurse in subrepos unless -S/--subrepos is
David M. Carr
add: support adding explicit files in subrepos...
r15410 specified. However, if you specify the full path of a file in a
subrepo, it will be added even without -S/--subrepos specified.
Martin Geisler
merge with stable
r15432 Git and Subversion subrepositories are currently silently
Patrick Mezard
Add subrepos help topic...
r12828 ignored.
:archive: archive does not recurse in subrepositories unless
-S/--subrepos is specified.
Matt Harbison
cat: support cat with explicit paths in subrepos...
r21041 :cat: cat currently only handles exact file matches in subrepos.
Git and Subversion subrepositories are currently ignored.
Patrick Mezard
Add subrepos help topic...
r12828 :commit: commit creates a consistent snapshot of the state of the
David M. Carr
subrepo: update help for commit to reflect new default behavior...
r15427 entire project and its subrepositories. If any subrepositories
have been modified, Mercurial will abort. Mercurial can be made
to instead commit all modified subrepositories by specifying
-S/--subrepos, or setting "ui.commitsubrepos=True" in a
configuration file (see :hg:`help config`). After there are no
longer any modified subrepositories, it records their state and
finally commits it in the parent repository.
Patrick Mezard
Add subrepos help topic...
r12828
:diff: diff does not recurse in subrepos unless -S/--subrepos is
specified. Changes are displayed as usual, on the subrepositories
David M. Carr
subrepo: improve help for git subrepo support...
r15428 elements. Git and Subversion subrepositories are currently
silently ignored.
Patrick Mezard
Add subrepos help topic...
r12828
David M. Carr
forget: support forgetting explicit paths in subrepos...
r15474 :forget: forget currently only handles exact file matches in subrepos.
Git and Subversion subrepositories are currently silently ignored.
Patrick Mezard
Add subrepos help topic...
r12828 :incoming: incoming does not recurse in subrepos unless -S/--subrepos
David M. Carr
subrepo: improve help for git subrepo support...
r15428 is specified. Git and Subversion subrepositories are currently
silently ignored.
Patrick Mezard
Add subrepos help topic...
r12828
:outgoing: outgoing does not recurse in subrepos unless -S/--subrepos
David M. Carr
subrepo: improve help for git subrepo support...
r15428 is specified. Git and Subversion subrepositories are currently
silently ignored.
Patrick Mezard
Add subrepos help topic...
r12828
:pull: pull is not recursive since it is not clear what to pull prior
to running :hg:`update`. Listing and retrieving all
subrepositories changes referenced by the parent repository pulled
changesets is expensive at best, impossible in the Subversion
case.
:push: Mercurial will automatically push all subrepositories first
when the parent repository is being pushed. This ensures new
subrepository changes are available when referenced by top-level
David M. Carr
subrepo: improve help for svn subrepo support...
r15429 repositories. Push is a no-op for Subversion subrepositories.
Patrick Mezard
Add subrepos help topic...
r12828
:status: status does not recurse into subrepositories unless
-S/--subrepos is specified. Subrepository changes are displayed as
regular Mercurial changes on the subrepository
elements. Subversion subrepositories are currently silently
ignored.
:update: update restores the subrepos in the state they were
originally committed in target changeset. If the recorded
changeset is not available in the current subrepository, Mercurial
will pull it in first before updating. This means that updating
can require network access when using subrepositories.
Remapping Subrepositories Sources
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 =================================
Patrick Mezard
Add subrepos help topic...
r12828
A subrepository source location may change during a project life,
invalidating references stored in the parent repository history. To
fix this, rewriting rules can be defined in parent repository ``hgrc``
file or in Mercurial configuration. See the ``[subpaths]`` section in
hgrc(5) for more details.