Size: 11235
Comment:
|
Size: 4098
Comment: moinfs edit
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
=== Working Directory State === | #pragma section-numbers 2 |
Line 3: | Line 3: |
Mercurial tracks various information about the [:WorkingDirectory:working directory] (the '''dirstate'''): | <<Include(A:dev)>> = Dirstate = Internals of the directory state cache. <<TableOfContents>> == Introduction == Mercurial tracks various information about the [[WorkingDirectory|working directory]] (the '''dirstate'''): |
Line 88: | Line 98: |
n 666 592 2008-08-21 11:29:20 hgext/win32text.py n 666 4919 2008-08-21 11:29:20 hgmerge n 666 283 2008-08-21 11:29:20 hgweb.cgi n 666 892 2008-08-21 11:29:20 hgwebdir.cgi n 666 0 2008-08-21 11:29:20 mercurial/__init__.py n 666 5751 2008-08-21 11:29:20 mercurial/appendfile.py n 666 7767 2008-08-21 11:29:20 mercurial/bdiff.c n 666 7664 2008-08-21 11:29:20 mercurial/bundlerepo.py n 666 16601 2008-08-21 11:29:20 mercurial/byterange.py n 666 1116 2008-08-21 11:29:20 mercurial/changegroup.py n 666 2075 2008-08-21 11:29:20 mercurial/changelog.py n 666 119453 2008-08-21 11:29:21 mercurial/commands.py n 666 4592 2008-08-21 11:29:21 mercurial/demandload.py n 666 14293 2008-08-21 11:29:21 mercurial/dirstate.py n 666 847 2008-08-21 11:29:21 mercurial/fancyopts.py n 666 3378 2008-08-21 11:29:21 mercurial/filelog.py n 666 1368 2008-08-21 11:29:21 mercurial/hg.py n 666 38438 2008-08-21 11:29:21 mercurial/hgweb.py n 666 770 2008-08-21 11:29:21 mercurial/httprangereader.py n 666 4826 2008-08-21 11:29:21 mercurial/httprepo.py n 666 444 2008-08-21 11:29:21 mercurial/i18n.py n 666 71466 2008-08-21 11:29:21 mercurial/localrepo.py n 666 3210 2008-08-21 11:29:21 mercurial/lock.py n 666 6626 2008-08-21 11:29:21 mercurial/manifest.py n 666 6101 2008-08-21 11:29:21 mercurial/mdiff.py n 666 7620 2008-08-21 11:29:21 mercurial/mpatch.c n 666 422 2008-08-21 11:29:21 mercurial/node.py n 666 2860 2008-08-21 11:29:21 mercurial/packagescan.py n 666 555 2008-08-21 11:29:21 mercurial/remoterepo.py n 666 274 2008-08-21 11:29:21 mercurial/repo.py n 666 30641 2008-08-21 11:29:21 mercurial/revlog.py n 666 3991 2008-08-21 11:29:21 mercurial/sshrepo.py n 666 1534 2008-08-21 11:29:21 mercurial/statichttprepo.py n 666 9759 2008-08-21 11:29:21 mercurial/templater.py n 666 2513 2008-08-21 11:29:21 mercurial/transaction.py n 666 8662 2008-08-21 11:29:21 mercurial/ui.py n 666 25290 2008-08-21 11:29:21 mercurial/util.py n 666 2148 2008-08-21 11:29:21 mercurial/version.py n 666 6251 2008-08-21 11:29:21 notes.txt n 666 507 2008-08-21 11:29:21 rewrite-log n 666 3941 2008-08-21 11:29:21 setup.py n 666 997 2008-08-21 11:29:21 templates/changelog-gitweb.tmpl n 666 155 2008-08-21 11:29:21 templates/changelog-rss.tmpl n 0 -1 unset templates/changelog.tmpl n 0 -1 unset templates/changelogentry-gitweb.tmpl n 0 -1 unset templates/changelogentry-rss.tmpl n 0 -1 unset templates/changelogentry.tmpl n 0 -1 unset templates/changeset-gitweb.tmpl n 0 -1 unset templates/changeset-raw.tmpl n 0 -1 unset templates/changeset.tmpl n 0 -1 unset templates/error-gitweb.tmpl n 0 -1 unset templates/error.tmpl n 0 -1 unset templates/fileannotate-gitweb.tmpl n 0 -1 unset templates/fileannotate-raw.tmpl n 0 -1 unset templates/fileannotate.tmpl n 0 -1 unset templates/filediff-raw.tmpl n 0 -1 unset templates/filediff.tmpl n 0 -1 unset templates/filelog-gitweb.tmpl n 0 -1 unset templates/filelog-rss.tmpl n 0 -1 unset templates/filelog.tmpl n 0 -1 unset templates/filelogentry-rss.tmpl n 0 -1 unset templates/filelogentry.tmpl n 0 -1 unset templates/filerevision-gitweb.tmpl n 0 -1 unset templates/filerevision-raw.tmpl n 0 -1 unset templates/filerevision.tmpl n 0 -1 unset templates/footer-gitweb.tmpl n 0 -1 unset templates/footer.tmpl n 0 -1 unset templates/header-gitweb.tmpl n 0 -1 unset templates/header-raw.tmpl n 0 -1 unset templates/header-rss.tmpl n 0 -1 unset templates/header.tmpl n 0 -1 unset templates/index.tmpl n 0 -1 unset templates/manifest-gitweb.tmpl n 0 -1 unset templates/manifest.tmpl n 0 -1 unset templates/map n 0 -1 unset templates/map-cmdline.changelog n 0 -1 unset templates/map-cmdline.compact n 0 -1 unset templates/map-cmdline.default n 0 -1 unset templates/map-gitweb n 0 -1 unset templates/map-raw n 0 -1 unset templates/map-rss n 0 -1 unset templates/notfound.tmpl n 0 -1 unset templates/search-gitweb.tmpl n 0 -1 unset templates/search.tmpl n 0 -1 unset templates/shortlog-gitweb.tmpl n 0 -1 unset templates/static/hgicon.png n 0 -1 unset templates/static/style-gitweb.css n 0 -1 unset templates/static/style.css n 0 -1 unset templates/summary-gitweb.tmpl n 0 -1 unset templates/tagentry-rss.tmpl n 0 -1 unset templates/tags-gitweb.tmpl n 0 -1 unset templates/tags-rss.tmpl n 0 -1 unset templates/tags.tmpl n 0 -1 unset templates/template-vars.txt n 0 -1 unset tests/README n 0 -1 unset tests/fish-merge n 0 -1 unset tests/md5sum.py n 0 -1 unset tests/run-tests n 0 -1 unset tests/test-addremove n 0 -1 unset tests/test-addremove.out n 0 -1 unset tests/test-archive n 0 -1 unset tests/test-archive.out ... }}} For files having state "n" in the dirstate, Mercurial compares the file modification time and the size in the dirstate with the modification time and the size of the file in the working directory. If both the modification time ''and'' the size are the same, Mercurial will assume it has not changed and will thus not include it in the next [:Commit:commit]. Having size "-1" and date "unset" means that Mercurial assumes nothing about the contents of that file and will have to look into the file to determine whether it has changed or not. This frequently happens for fresh checkouts if the number of files are large enough. See also [http://www.selenic.com/hg/rev/af3f26b6bba4 dirstate: ignore stat data for files that were updated too recently], changeset {{{af3f26b6bba4}}} by Alexis S. L. Carvalho (introduced in Mercurial release 1.0); and an explanation given by Matt Mackall in http://selenic.com/pipermail/mercurial/2008-August/020984.html for this. ---- CategoryInternals |
n 666 592 2008-08-21 11: |
Note:
This page is primarily intended for developers of Mercurial.
Dirstate
Internals of the directory state cache.
Contents
1. Introduction
Mercurial tracks various information about the working directory (the dirstate):
- what revision(s) are currently checked out
- what files have been copied or renamed
- what files are controlled by Mercurial
For each file that Mercurial controls, we record the following information:
- its size
- its mode
- its modification time
- its "state"
The states that are tracked are:
- n - normal
- a - added
- r - removed
- m - 3-way merged
With this information, we can quickly determine what files in the working directory have changed.
Here's a real example of a dirstate of a clone of the Mercurial repository itself: