Size: 304
Comment:
|
Size: 3196
Comment:
|
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]. It’s useful to think of the working directory as "the changeset I’m about to commit". If the working directory has no [:LocalModifications:local modifications] it is said to be ''clean''. Use {{{hg revert}}} to discard all local modifications (see [:Revert]). Use {{{hg update}}} to bring the working directory into sync with a particular [:ChangeSet:changeset] (see [:Update]). To remove all files from the working directory (not the repository!), you can do {{{ hg update null }}} A [:NamedBranches:branch name] can be set for the working directory. Mercurial tracks various information about the working directory (see DirState). === Parent(s) === 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 local modifications. An {{{hg update}}} will change the parent revision, whereas {{{hg 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], but only until that merge has been committed. Immediately after a commit (or after an update -C), the working directory has exactly ''one'' parent revision, namely the newly committed (or updated-to) changeset. This is even the case if the newly committed changeset was a merge. The command {{{hg parents}}} (without a revision specifier) lists the parent revision(s) of the working directory. Example output for a single parent (no uncommitted merge): {{{ $ hg parents changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial }}} Example output for two parent revisions (after an uncommitted merge): {{{ $ hg parents changeset: 2:c3844fde99f0 user: mpm@selenic.com date: Tue May 06 20:10:35 2008 +0200 summary: Add description of hello.c changeset: 3:86794f718fb1 tag: tip parent: 1:82e55d328c8c user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial }}} === When an update is needed === There are several ways to see if an update of your working directory is needed (see related [http://www.selenic.com/pipermail/mercurial/2006-September/010951.html mailing list thread]): To see the delta between the working directory and the tip, do: {{{ hg diff -r tip }}} To see what patches would be applied to the working directory on an update do: {{{ hg log -r tip:. }}} If the working directory is at the tip (that is, no update needed) {{{ hg id }}} will write "tip" after the changeset id. ---- 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].
It’s useful to think of the working directory as "the changeset I’m about to commit". If the working directory has no [:LocalModifications:local modifications] it is said to be clean.
Use hg revert to discard all local modifications (see [:Revert]).
Use hg update to bring the working directory into sync with a particular [:ChangeSet:changeset] (see [:Update]).
To remove all files from the working directory (not the repository!), you can do
hg update null
A [:NamedBranches:branch name] can be set for the working directory.
Mercurial tracks various information about the working directory (see DirState).
Parent(s)
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 local modifications.
An hg update will change the parent revision, whereas hg 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], but only until that merge has been committed.
Immediately after a commit (or after an update -C), the working directory has exactly one parent revision, namely the newly committed (or updated-to) changeset. This is even the case if the newly committed changeset was a merge.
The command hg parents (without a revision specifier) lists the parent revision(s) of the working directory.
Example output for a single parent (no uncommitted merge):
$ hg parents changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial
Example output for two parent revisions (after an uncommitted merge):
$ hg parents changeset: 2:c3844fde99f0 user: mpm@selenic.com date: Tue May 06 20:10:35 2008 +0200 summary: Add description of hello.c changeset: 3:86794f718fb1 tag: tip parent: 1:82e55d328c8c user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial
When an update is needed
There are several ways to see if an update of your working directory is needed (see related [http://www.selenic.com/pipermail/mercurial/2006-September/010951.html mailing list thread]):
To see the delta between the working directory and the tip, do:
hg diff -r tip
To see what patches would be applied to the working directory on an update do:
hg log -r tip:.
If the working directory is at the tip (that is, no update needed)
hg id
will write "tip" after the changeset id.