Hi, 
 
As far as I can see, svn versions older than 1.4.0 are not supported just 
because the entries file is in xml. They changed this in 1.4.0. 
 
So, I just added a few lines to the 'dirty' parse in order to also support 
older versions. 
 
Vincent
Index: src/VCBackend.cpp
===================================================================
--- src/VCBackend.cpp   (revision 26235)
+++ src/VCBackend.cpp   (working copy)
@@ -420,19 +420,34 @@
 
 FileName const SVN::findFile(FileName const & file)
 {
-       // First we look for the CVS/Entries in the same dir
+       // First we look for the .svn/Entries in the same dir
        // where we have file.
        FileName const entries(onlyPath(file.absFilename()) + "/.svn/entries");
        string const tmpf = onlyFilename(file.absFilename());
        LYXERR(Debug::LYXVC, "LyXVC: Checking if file is under svn in `" << 
entries
                             << "' for `" << tmpf << '\'');
        if (entries.isReadableFile()) {
-               // Ok we are at least in a CVS dir. Parse the CVS/Entries
+               // Ok we are at least in a svn dir. Parse the .svn/Entries
                // and see if we can find this file. We do a fast and
                // dirty parse here.
                ifstream ifs(entries.toFilesystemEncoding().c_str());
-               string line, oldline;
+               string line, oldline, oldxmlline;
                while (getline(ifs, line)) {
+                       // svn version < 1.4.0
+                       if (line.find("entries", 0) != -1)
+                               oldxmlline.clear();
+                       if (line.find(tmpf,0) != -1)
+                               if (oldxmlline == "dirorfile")
+                                       return entries;
+                               else
+                                       oldxmlline=tmpf;
+                       if (line.find("dir",0) != -1 || line.find("file",0) != 
-1)
+                               if (oldxmlline == tmpf)
+                                       return entries;
+                               else
+                                       oldxmlline="dirorfile";
+
+                       // svn version >= 1.4.0
                        if (line == "dir" || line == "file")
                                LYXERR(Debug::LYXVC, "\tEntries: " << oldline);
                        if (oldline == tmpf && line == "file")
@@ -545,7 +560,7 @@
 
 void SVN::revert()
 {
-       // Reverts to the version in CVS repository and
+       // Reverts to the version in svn repository and
        // gets the updated version from the repository.
        string const fil = quoteName(onlyFilename(owner_->absFileName()));

Reply via email to