The output of SVN merge has 4 columns of letters lis开发者_如何转开发ted before the file name. I understand the meaning of the letters (mostly) but I can't find any information on the meanings of the columns and so only have a vague understanding based on context. Can anyone point me to the documentation on this?
Based on context I've been able to infer that column:
- Is about text changes to a file
- Seems to be related to use of the svn ignore command on a folder (or maybe it's just properties of the file?)
- I've never seen a letter in the third column and hence I have no idea what it means.
- Might be tree conflicts? This is the one I'm mostly worried about because I don't know how to handle it yet.
James, I had the same issue - very frustrating not finding detailed "svn merge" info; however, in my google searches I found this posting: http://svn.haxx.se/users/archive-2008-06/0813.shtml
It indicates that the "svn merge" status letters are identical to the "svn update" status letters, which are actually documented. From the "svn help update" command:
For each updated item a line will start with a character reporting the action taken. These characters have the following meaning:
A Added
D Deleted
U Updated
C Conflict
G Merged
A character in the first column signifies an update to the actual file, while updates to the file's properties are shown in the second column. A 'B' in the third column signifies that the lock for the file has been broken or stolen.
Same information but from official source:
http://subversion.apache.org/docs/svn-merge.txt
For each merged item a line will be printed with characters reporting the
action taken. These characters have the following meaning:
A Added
D Deleted
U Updated
C Conflict
G Merged
E Existed
R Replaced
Characters in the first column report about the item itself.
Characters in the second column report about properties of the item.
A 'C' in the third column indicates a tree conflict, while a 'C' in
the first and second columns indicate textual conflicts in files
and in property values, respectively.
Execute this command to get the definitions of these values: svn update --help
This is excepted from the output of that command:
For each updated item a line will be printed with characters reporting the action taken. These characters have the following meaning:
A Added
D Deleted
U Updated
C Conflict
G Merged
E Existed
R Replaced
Characters in the first column report about the item itself. Characters in the second column report about properties of the item. A 'B' in the third column signifies that the lock for the file has been broken or stolen. A 'C' in the fourth column indicates a tree conflict, while a 'C' in the first and second columns indicate textual conflicts in files and in property values, respectively.
From this page of the documentation:
The first column indicates that an item was added, deleted, or otherwise changed:
' ' No modifications.
'A' Item is scheduled for addition.
'D' Item is scheduled for deletion.
'M' Item has been modified.
'R' Item has been replaced in your working copy. This means the file was scheduled for deletion, and then a new file with the same name was scheduled for addition in its place.
'C' The contents (as opposed to the properties) of the item conflict with updates received from the repository.
'X' Item is present because of an externals definition.
'I' Item is being ignored (e.g., with the svn:ignore property).
'?' Item is not under version control.
'!' Item is missing (e.g., you moved or deleted it without using svn). This also indicates that a directory is incomplete (a checkout or update was interrupted).
'~' Item is versioned as one kind of object (file, directory, link), but has been replaced by a different kind of object.
The second column tells the status of a file's or directory's properties:
' ' No modifications.
'M' Properties for this item have been modified.
'C' Properties for this item are in conflict with property updates received from the repository.
The third column is populated only if the working copy directory is locked (see the section called “Sometimes You Just Need to Clean Up”):
' ' Item is not locked.
'L' Item is locked.
The fourth column is populated only if the item is scheduled for addition-with-history:
' ' No history scheduled with commit.
'+' History scheduled with commit.
The fifth column is populated only if the item is switched relative to its parent (see the section called “Traversing Branches”):
' ' Item is a child of its parent directory.
'S' Item is switched.
The sixth column is populated with lock information:
' ' When --show-updates is used, the file is not locked. If --show-updates is not used, this merely means that the file is not locked in this working copy.
K File is locked in this working copy.
O File is locked either by another user or in another working copy. This appears only when --show-updates is used.
T File was locked in this working copy, but the lock has been “stolen” and is invalid. The file is currently locked in the repository. This appears only when --show-updates is used.
B File was locked in this working copy, but the lock has been “broken” and is invalid. The file is no longer locked. This appears only when --show-updates is used.
The out-of-date information appears in the seventh column (only if you pass the --show-updates option):
' ' The item in your working copy is up to date.
'*' A newer revision of the item exists on the server.
By experimentation, the C's that shows up in the 3rd column in svn merge correspond to the C's that show up in the 7th column when I do an svn status. So, a C in the 3rd column from the merge command must correspond to the item being the victim of a tree conflict.
With the links given by Corey, you can also look at this "Subversion Commands and Scripts". This page has detailed explanation about the svn commands. Also the detailed explanation for svn merge is available at 'svn merge'
Hope this helps.
精彩评论