Hi,

I think I found a subtle difference for outputting XML formatted data from 
svn info and status.  I'm on Win7, SVN 1.8.5 (r1542147).

svn status when generating <entry path=> tags does not seem to care about 
your current working directory (CWD) relative to the requested path.  It 
always appears to return an absolute file path.
svn info returns different path depending on if the WC path requested is 
within the EXACT spelling of the CWD.  When your requested path is within 
the enclosing CWD, it will return relative paths and absolute otherwise. 
If the requested path spelling is equivalent (for Win systems any how), it 
will only return relative for exact spelling.  Changing the case of a 
directory will change it to absolute.  It appears there may be other ways 
to get relative vs absolute with info but I couldn't repeat reliably.

It would be nice if SVN would always return an absolute path consistent 
with the status command.  This would also solve the case where Win paths 
are case insensitive and equivalent paths return different results.  It 
would also be good as generally when using --xml, you are using some 
automated tool or application and do not always know or control what the 
CWD is (especially for Win apps).  Additionally, the path that the entry 
is relative to is not the WC but the CWD.  This makes grabbing an XML file 
later and making sense of it impossible (since the CWD is not embedded 
within the XML file) -- see third example below.

I'm not sure if this is considered operating as-design, and therefore an 
enhancement request, or if it is a bug. 

I appreciate your time!

Thanks
Dan


Here's an example... This first call is using a case-different path from 
what the CWD is (note the project_files vs Project_files).  It returned an 
absolute path. The second returned relative paths (exact spelling match). 
The third is showing the relative paths are not relative to a WC, but 
relative to the CWD.

c:\Project_files\LocalSVN>svn info 
"c:\project_files\LocalSVN\trunk\info_test" --depth immediates --xml
<?xml version="1.0" encoding="UTF-8"?>
<info>
<entry
   path="C:\project_files\LocalSVN\trunk\info_test"
   revision="5"
   kind="dir">
(Snipped)
</entry>
<entry
   path="C:\project_files\LocalSVN\trunk\info_test\foo.bar"
   revision="6"
   kind="file">
(Snipped)
</entry>
</info>


c:\Project_files\LocalSVN>svn info 
"c:\Project_files\LocalSVN\trunk\info_test" --depth immediates --xml
<?xml version="1.0" encoding="UTF-8"?>
<info>
<entry
   kind="dir"
   path="trunk\info_test"
   revision="5">
(Snipped)
</entry>
<entry
   path="trunk\info_test\foo.bar"
   revision="6"
   kind="file">
(Snipped)
</entry>
</info>

c:\>svn info "c:\Project_files\LocalSVN\trunk\info_test" --depth 
immediates --xml
<?xml version="1.0" encoding="UTF-8"?>
<info>
<entry
   path="Project_files\LocalSVN\trunk\info_test"
   revision="5"
   kind="dir">
(Snipped)
<entry
   path="Project_files\LocalSVN\trunk\info_test\foo.bar"
   revision="6"
   kind="file">
(Snipped)
</entry>
</info>

Reply via email to