Merge branch 'jk/maint-fast-import-doc-dedup-done' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 14 Jan 2013 15:48:39 +0000 (07:48 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Jan 2013 15:48:39 +0000 (07:48 -0800)
* jk/maint-fast-import-doc-dedup-done:
git-fast-import(1): remove duplicate '--done' option

1  2 
Documentation/git-fast-import.txt
index 68bca1a29de51995881edae077c8232bcdb1f07a,47d71964a7353936389b451269eff7565782fb65..3da5cc272a7aac921017fead83c271b5d35fd977
@@@ -8,7 -8,6 +8,7 @@@ git-fast-import - Backend for fast Git 
  
  SYNOPSIS
  --------
 +[verse]
  frontend | 'git fast-import' [options]
  
  DESCRIPTION
@@@ -39,10 -38,6 +39,6 @@@ OPTION
        See ``Date Formats'' below for details about which formats
        are supported, and their syntax.
  
- -- done::
-       Terminate with error if there is no 'done' command at the
-       end of the stream.
  --force::
        Force updating modified existing branches, even if doing
        so would cause commits to be lost (as the new commit does
        options.
  
  --cat-blob-fd=<fd>::
 -      Specify the file descriptor that will be written to
 -      when the `cat-blob` command is encountered in the stream.
 -      The default behaviour is to write to `stdout`.
 +      Write responses to `cat-blob` and `ls` queries to the
 +      file descriptor <fd> instead of `stdout`.  Allows `progress`
 +      output intended for the end-user to be separated from other
 +      output.
  
  --done::
-       Require a `done` command at the end of the stream.
+       Terminate with error if there is no `done` command at the
+       end of the stream.
        This option might be useful for detecting errors that
        cause the frontend to terminate before it has started to
        write a stream.
@@@ -427,11 -422,11 +424,11 @@@ they made it
  
  Here `<name>` is the person's display name (for example
  ``Com M Itter'') and `<email>` is the person's email address
 -(``cm@example.com'').  `LT` and `GT` are the literal less-than (\x3c)
 +(``\cm@example.com'').  `LT` and `GT` are the literal less-than (\x3c)
  and greater-than (\x3e) symbols.  These are required to delimit
  the email address from the other fields in the line.  Note that
 -`<name>` is free-form and may contain any sequence of bytes, except
 -`LT` and `LF`.  It is typically UTF-8 encoded.
 +`<name>` and `<email>` are free-form and may contain any sequence
 +of bytes, except `LT`, `GT` and `LF`.  `<name>` is typically UTF-8 encoded.
  
  The time of the change is specified by `<when>` using the date format
  that was selected by the \--date-format=<fmt> command line option.
@@@ -442,9 -437,7 +439,9 @@@ their syntax
  ^^^^^^
  The `from` command is used to specify the commit to initialize
  this branch from.  This revision will be the first ancestor of the
 -new commit.
 +new commit.  The state of the tree built at this commit will begin
 +with the state at the `from` commit, and be altered by the content
 +modifications in this commit.
  
  Omitting the `from` command in the first commit of a new branch
  will cause fast-import to create that commit with no ancestor. This
@@@ -485,18 -478,16 +482,18 @@@ current branch value should be written 
  ----
        from refs/heads/branch^0
  ----
 -The `{caret}0` suffix is necessary as fast-import does not permit a branch to
 +The `^0` suffix is necessary as fast-import does not permit a branch to
  start from itself, and the branch is created in memory before the
 -`from` command is even read from the input.  Adding `{caret}0` will force
 +`from` command is even read from the input.  Adding `^0` will force
  fast-import to resolve the commit through Git's revision parsing library,
  rather than its internal branch table, thereby loading in the
  existing value of the branch.
  
  `merge`
  ^^^^^^^
 -Includes one additional ancestor commit.  If the `from` command is
 +Includes one additional ancestor commit.  The additional ancestry
 +link does not change the way the tree state is built at this commit.
 +If the `from` command is
  omitted when creating a new branch, the first `merge` commit will be
  the first ancestor of the current commit, and the branch will start
  out with no files.  An unlimited number of `merge` commands per
@@@ -562,12 -553,8 +559,12 @@@ A `<path>` string must use UNIX-style d
  slash `/`), may contain any byte other than `LF`, and must not
  start with double quote (`"`).
  
 -If an `LF` or double quote must be encoded into `<path>` shell-style
 -quoting should be used, e.g. `"path/with\n and \" in it"`.
 +A path can use C-style string quoting; this is accepted in all cases
 +and mandatory if the filename starts with double quote or contains
 +`LF`. In C-style quoting, the complete name should be surrounded with
 +double quotes, and any `LF`, backslash, or double quote characters
 +must be escaped by preceding them with a backslash (e.g.,
 +`"path/with\n, \\ and \" in it"`).
  
  The value of `<path>` must be in canonical form. That is it must not:
  
@@@ -673,14 -660,9 +670,14 @@@ paths for a commit are encouraged to d
  
  `notemodify`
  ^^^^^^^^^^^^
 -Included in a `commit` command to add a new note (annotating a given
 -commit) or change the content of an existing note.  This command has
 -two different means of specifying the content of the note.
 +Included in a `commit` `<notes_ref>` command to add a new note
 +annotating a `<committish>` or change this annotation contents.
 +Internally it is similar to filemodify 100644 on `<committish>`
 +path (maybe split into subdirectories). It's not advised to
 +use any other commands to write to the `<notes_ref>` tree except
 +`filedeleteall` to delete all existing notes in this tree.
 +This command has two different means of specifying the content
 +of the note.
  
  External data format::
        The data content for the note was already supplied by a prior
@@@ -955,9 -937,6 +952,9 @@@ This command can be used anywhere in th
  accepted.  In particular, the `cat-blob` command can be used in the
  middle of a commit but not in the middle of a `data` command.
  
 +See ``Responses To Commands'' below for details about how to read
 +this output safely.
 +
  `ls`
  ~~~~
  Prints information about the object at a path to a file descriptor
@@@ -991,7 -970,7 +988,7 @@@ Reading from a named tree:
  
  See `filemodify` above for a detailed description of `<path>`.
  
 -Output uses the same format as `git ls-tree <tree> {litdd} <path>`:
 +Output uses the same format as `git ls-tree <tree> -- <path>`:
  
  ====
        <mode> SP ('blob' | 'tree' | 'commit') SP <dataref> HT <path> LF
@@@ -1007,9 -986,6 +1004,9 @@@ instead repor
        missing SP <path> LF
  ====
  
 +See ``Responses To Commands'' below for details about how to read
 +this output safely.
 +
  `feature`
  ~~~~~~~~~
  Require that fast-import supports the specified feature, or abort if
@@@ -1031,14 -1007,10 +1028,14 @@@ force:
        (see OPTIONS, above).
  
  import-marks::
 +import-marks-if-exists::
        Like --import-marks except in two respects: first, only one
 -      "feature import-marks" command is allowed per stream;
 -      second, an --import-marks= command-line option overrides
 -      any "feature import-marks" command in the stream.
 +      "feature import-marks" or "feature import-marks-if-exists"
 +      command is allowed per stream; second, an --import-marks=
 +      or --import-marks-if-exists command-line option overrides
 +      any of these "feature" commands in the stream; third,
 +      "feature import-marks-if-exists" like a corresponding
 +      command-line option silently skips a nonexistent file.
  
  cat-blob::
  ls::
@@@ -1100,35 -1072,6 +1097,35 @@@ If the `--done` command line option or 
  in use, the `done` command is mandatory and marks the end of the
  stream.
  
 +Responses To Commands
 +---------------------
 +New objects written by fast-import are not available immediately.
 +Most fast-import commands have no visible effect until the next
 +checkpoint (or completion).  The frontend can send commands to
 +fill fast-import's input pipe without worrying about how quickly
 +they will take effect, which improves performance by simplifying
 +scheduling.
 +
 +For some frontends, though, it is useful to be able to read back
 +data from the current repository as it is being updated (for
 +example when the source material describes objects in terms of
 +patches to be applied to previously imported objects).  This can
 +be accomplished by connecting the frontend and fast-import via
 +bidirectional pipes:
 +
 +====
 +      mkfifo fast-import-output
 +      frontend <fast-import-output |
 +      git fast-import >fast-import-output
 +====
 +
 +A frontend set up this way can use `progress`, `ls`, and `cat-blob`
 +commands to read information from the import in progress.
 +
 +To avoid deadlock, such frontends must completely consume any
 +pending output from `progress`, `ls`, and `cat-blob` before
 +performing writes to fast-import that might block.
 +
  Crash Reports
  -------------
  If fast-import is supplied invalid input it will terminate with a