What does the E status code in SVN mean?

Pops picture Pops · Oct 11, 2011 · Viewed 11.7k times · Source

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

Answer

Kevin Stricker picture Kevin Stricker · Oct 11, 2011

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.