]> git.lyx.org Git - lyx.git/blobdiff - src/VCBackend.cpp
This should bring cvs revision control to usable state.
[lyx.git] / src / VCBackend.cpp
index eb9def38f175ca039829c958c3adce8d26e50625..1673072797bf8f056fc6860b766a31601968b007 100644 (file)
@@ -163,6 +163,10 @@ void RCS::checkIn(string const & msg)
                    FileName(owner_->filePath()));
 }
 
+bool RCS::checkInEnabled()
+{
+       return owner_ && !owner_->isReadonly();
+}
 
 void RCS::checkOut()
 {
@@ -172,6 +176,12 @@ void RCS::checkOut()
 }
 
 
+bool RCS::checkOutEnabled()
+{
+       return owner_ && owner_->isReadonly();
+}
+
+
 void RCS::revert()
 {
        doVCCommand("co -f -u" + version() + " "
@@ -191,6 +201,12 @@ void RCS::undoLast()
 }
 
 
+bool RCS::undoLastEnabled()
+{
+       return true;
+}
+
+
 void RCS::getLog(FileName const & tmpf)
 {
        doVCCommand("rlog " + quoteName(onlyFilename(owner_->absFileName()))
@@ -217,20 +233,20 @@ FileName const CVS::findFile(FileName const & file)
 {
        // First we look for the CVS/Entries in the same dir
        // where we have file.
-       FileName const dir(onlyPath(file.absFilename()) + "/CVS/Entries");
+       FileName const entries(onlyPath(file.absFilename()) + "/CVS/Entries");
        string const tmpf = '/' + onlyFilename(file.absFilename()) + '/';
-       LYXERR(Debug::LYXVC, "LyXVC: Checking in `" << dir
+       LYXERR(Debug::LYXVC, "LyXVC: Checking if file is under cvs in `" << entries
                             << "' for `" << tmpf << '\'');
-       if (dir.isReadableDirectory()) {
+       if (entries.isReadableFile()) {
                // Ok we are at least in a CVS dir. Parse the CVS/Entries
                // and see if we can find this file. We do a fast and
                // dirty parse here.
-               ifstream ifs(dir.toFilesystemEncoding().c_str());
+               ifstream ifs(entries.toFilesystemEncoding().c_str());
                string line;
                while (getline(ifs, line)) {
                        LYXERR(Debug::LYXVC, "\tEntries: " << line);
                        if (contains(line, tmpf))
-                               return dir;
+                               return entries;
                }
        }
        return FileName();
@@ -297,6 +313,12 @@ void CVS::checkIn(string const & msg)
 }
 
 
+bool CVS::checkInEnabled()
+{
+       return true;
+}
+
+
 void CVS::checkOut()
 {
        // cvs update or perhaps for cvs this should be a noop
@@ -304,6 +326,12 @@ void CVS::checkOut()
 }
 
 
+bool CVS::checkOutEnabled()
+{
+       return false;
+}
+
+
 void CVS::revert()
 {
        // Reverts to the version in CVS repository and
@@ -325,6 +353,12 @@ void CVS::undoLast()
 }
 
 
+bool CVS::undoLastEnabled()
+{
+       return false;
+}
+
+
 void CVS::getLog(FileName const & tmpf)
 {
        doVCCommand("cvs log " + quoteName(onlyFilename(owner_->absFileName()))