docs: give more hints about how "add -e" works

The previous text was not exactly accurate; it is OK to
change space and minus lines, but only in certain ways. This
patch attempts to cover explicitly what can be done at the
individual line level, and cautions the user that
conceptually larger changes (like modifying a line) require
some understanding of the patch format.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2010-10-21 10:30:35 -04:00 committed by Junio C Hamano
parent 5b57413cb3
commit 5df4d67d41

View File

@ -92,9 +92,35 @@ See ``Interactive mode'' for details.
edit it. After the editor was closed, adjust the hunk headers
and apply the patch to the index.
+
*NOTE*: Obviously, if you change anything else than the first character
on lines beginning with a space or a minus, the patch will no longer
apply.
The intent of this option is to pick and choose lines of the patch to
apply, or even to modify the contents of lines to be staged. There are
three line types in a patch: addition lines (beginning with a plus),
removal lines (beginning with a minus), and context lines (beginning
with a space). In general, it should be safe to:
+
--
* remove addition lines (don't stage the line)
* modify the content of any addition lines (stage modified contents)
* add new addition lines (stage the new line)
* convert context lines to removal lines (stage removal of line)
* convert removal lines to context lines (don't stage removal)
--
+
Similarly, your patch will likely not apply if you:
+
--
* add context or removal lines
* delete removal or context lines
* modify the contents of context or removal lines
--
+
NOTE: In the first list above, the results given for each action are
with respect to that patch line only. Conceptual changes like
modification of a line in the original file are actually represented by
removal of the old line followed by addition of the new line. Deleting
only the addition line of this pair but leaving the removal line would
therefore convert the modification into a deletion. In other words, use
this feature with caution, as it is easy to stage unintended changes.
-u::
--update::