I just got SVN's E
status code for the first time. What does it mean? The update
documentation says that it stands for "Existed," but gives no more detail than that.
Alternately, what is an "obstructing path"? The long help file states that "Obstructing paths are reported in the first column with code 'E'."
Some background: I deleted a file from my working copy that I shouldn't have deleted. Updating from SVN didn't restore it, so I created a new file with the same filename and copy-pasted the repo copy of the file into it.
I then added it to version control, but that gave it the "versioned file that needs to be added to the remote repository" status, not the "no local changes" status.
Using Subclipse, I selected Replace With > Latest from Repository on the parent folder, and this happened:
revert -N C:/foo/Bar.java
Reverted C:/foo/Bar.java
update C:/foo/Bar.java -r HEAD --force
E C:/foo/Bar.java
Updated to revision 396.
===== File Statistics: =====
Existing: 1
An "obstructing path" refers to an existing unversioned file or folder at a path where the update command needs to copy a versioned file or folder.
The E status only appears when the --force
flag is used, without the flag the update would just fail. With the flag, it leaves the file alone and allows you to decide what to do with it.
The puzzling thing about this situation is how it ended up thinking the file was unversioned immediately after a successful revert.
Ref: svn help update
If the obstructing path is the same type (file or directory) as the corresponding path in the repository it becomes versioned but its contents are left 'as-is' in the working copy.
E = File existed before the update.
http://plind.dk/2009/06/26/svn-status-cheatsheet/
"Unversioned obstructing paths in the working copy do not automatically cause a failure if the update attempts to add the same path. If the obstructing path is the same type (file or directory) as the corresponding path in the repository it becomes versioned but its contents are left 'as-is' in the working copy. This means that an obstructing directory's unversioned children may also obstruct and become versioned. For files, any content differences between the obstruction and the repository are treated like a local modification to the working copy. All properties from the repository are applied to the obstructing path. Obstructing paths are reported in the first column with code 'E'.
Use the --set-depth option to set a new working copy depth on the targets of this operation."
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With