Size: 304
Comment:
|
Size: 2740
Comment: cleanup after merge
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
The working directory is the top-level directory in a Repository, in which the plain versions of files are available to read, edit and build. Files in the working directory are usually from the ["Tip"], but may be from older revisions, or modified and not yet ["Commit"]ted. | The '''working directory''' is the top-level directory in a [:Repository:repository], in which the plain versions of files are available to read, edit and build. Files in the working directory are usually from the [:Tip:tip], but may be from older [:Revision:revisions], or modified and not yet [:Commit:committed]. A working directory has one or two [:Parent:parent] revisions. The parent revision or revisions will become the parent revisions of the new revision which will eventually be created by a commit of the [:LocalModifications:local modifications]. An [:Update:update] will change the parent revision, whereas a [:Revert:revert] will only modify the content of the working directory. A working directory will only have two parent revisions as the result of a [:Merge:merge]. A [:NamedBranches:branch name] can be set for the working directory. It’s useful to think of the working directory as "the [:ChangeSet:changeset] I’m about to commit". === Tracking Working Directory State === Mercurial tracks various information about the working directory: * 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 an example of the dirstate: {{{ $ hg parents -q 1224:cc61d366bc3b $ hg debugstate n 644 168 08/19/05 17:42:17 .hgignore n 644 412 08/20/05 01:46:57 .hgtags n 644 1328 08/26/05 23:22:20 CONTRIBUTORS n 644 17992 06/30/05 10:19:51 COPYING n 644 459 08/24/05 00:38:20 MANIFEST.in n 644 512 08/24/05 00:35:02 Makefile n 644 232 06/30/05 10:19:51 PKG-INFO n 644 2736 08/20/05 00:48:33 README n 644 1676 06/30/05 10:19:51 comparison.txt n 644 3711 12/31/69 15:59:59 contrib/bash_completion n 711 1305 07/01/05 15:04:52 contrib/buildrpm n 755 8300 08/16/05 16:03:59 contrib/convert-repo n 644 69 06/30/05 10:19:51 contrib/git-viz/git-cat-file n 644 69 06/30/05 10:19:51 contrib/git-viz/git-diff-tree n 644 69 06/30/05 10:19:51 contrib/git-viz/git-rev-list n 644 69 06/30/05 10:19:51 contrib/git-viz/git-rev-tree n 644 457 06/30/05 10:19:51 contrib/git-viz/hg-viz n 755 8039 08/16/05 16:03:59 contrib/hgit n 755 40043 06/30/05 10:19:51 contrib/hgk ... }}} ---- CategoryGlossary |
Working directory
The working directory is the top-level directory in a [:Repository:repository], in which the plain versions of files are available to read, edit and build. Files in the working directory are usually from the [:Tip:tip], but may be from older [:Revision:revisions], or modified and not yet [:Commit:committed].
A working directory has one or two [:Parent:parent] revisions. The parent revision or revisions will become the parent revisions of the new revision which will eventually be created by a commit of the [:LocalModifications:local modifications]. An [:Update:update] will change the parent revision, whereas a [:Revert:revert] will only modify the content of the working directory.
A working directory will only have two parent revisions as the result of a [:Merge:merge].
A [:NamedBranches:branch name] can be set for the working directory.
It’s useful to think of the working directory as "the [:ChangeSet:changeset] I’m about to commit".
Tracking Working Directory State
Mercurial tracks various information about the working directory:
- 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 an example of the dirstate:
$ hg parents -q 1224:cc61d366bc3b $ hg debugstate n 644 168 08/19/05 17:42:17 .hgignore n 644 412 08/20/05 01:46:57 .hgtags n 644 1328 08/26/05 23:22:20 CONTRIBUTORS n 644 17992 06/30/05 10:19:51 COPYING n 644 459 08/24/05 00:38:20 MANIFEST.in n 644 512 08/24/05 00:35:02 Makefile n 644 232 06/30/05 10:19:51 PKG-INFO n 644 2736 08/20/05 00:48:33 README n 644 1676 06/30/05 10:19:51 comparison.txt n 644 3711 12/31/69 15:59:59 contrib/bash_completion n 711 1305 07/01/05 15:04:52 contrib/buildrpm n 755 8300 08/16/05 16:03:59 contrib/convert-repo n 644 69 06/30/05 10:19:51 contrib/git-viz/git-cat-file n 644 69 06/30/05 10:19:51 contrib/git-viz/git-diff-tree n 644 69 06/30/05 10:19:51 contrib/git-viz/git-rev-list n 644 69 06/30/05 10:19:51 contrib/git-viz/git-rev-tree n 644 457 06/30/05 10:19:51 contrib/git-viz/hg-viz n 755 8039 08/16/05 16:03:59 contrib/hgit n 755 40043 06/30/05 10:19:51 contrib/hgk ...