X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fvc-backend.C;h=2d5c8383d6426ea96a0d6651ba088cc4c00b0484;hb=d4ee9c38b6aa45146f67658352623bcbc3e0ad9b;hp=6e8a8b751e6026b3c16b3ff47a87459d0a29997b;hpb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;p=lyx.git diff --git a/src/vc-backend.C b/src/vc-backend.C index 6e8a8b751e..2d5c8383d6 100644 --- a/src/vc-backend.C +++ b/src/vc-backend.C @@ -12,6 +12,7 @@ #include "support/LRegex.h" #include "support/LSubstring.h" #include "support/path.h" +#include "support/filetools.h" #include "buffer.h" #include "LyXView.h" #include "lyxfunc.h" @@ -25,7 +26,7 @@ int VCS::doVCCommand(string const & cmd, string const & path) lyxerr[Debug::LYXVC] << "doVCCommand: " << cmd << endl; Systemcalls one; Path p(path); - int ret = one.startscript(Systemcalls::System, cmd); + int const ret = one.startscript(Systemcalls::System, cmd); return ret; } @@ -37,7 +38,7 @@ RCS::RCS(string const & m) } -string RCS::find_file(string const & file) +string const RCS::find_file(string const & file) { string tmp(file); // Check if *,v exists. @@ -106,7 +107,7 @@ void RCS::scanMaster() // get locker here if (contains(token, ";")) { locker_ = "Unlocked"; - vcstat = UNLOCKED; + vcstatus = UNLOCKED; continue; } string tmpt, s1, s2; @@ -118,7 +119,7 @@ void RCS::scanMaster() // s2 is user, and s1 is version if (s1 == version_) { locker_ = s2; - vcstat = LOCKED; + vcstatus = LOCKED; break; } } while (!contains(tmpt, ";")); @@ -181,7 +182,8 @@ void RCS::undoLast() { lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl; doVCCommand("rcs -o" + version() + " \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filepath); } @@ -200,16 +202,15 @@ CVS::CVS(string const & m, string const & f) } -string CVS::find_file(string const & file) +string const CVS::find_file(string const & file) { // First we look for the CVS/Entries in the same dir // where we have file. - string dir = OnlyPath(file); - string tmpf = "/" + OnlyFilename(file) + "/"; - dir += "/CVS/Entries"; + string const dir = OnlyPath(file) + "/CVS/Entries"; + string const tmpf = "/" + OnlyFilename(file) + "/"; lyxerr[Debug::LYXVC] << "LyXVC: checking in `" << dir << "' for `" << tmpf << "'" << endl; - FileInfo f(dir); + FileInfo const f(dir); if (f.readable()) { // 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 @@ -258,12 +259,12 @@ void CVS::scanMaster() << mod_date << "'" << endl; if (file_date == mod_date) { locker_ = "Unlocked"; - vcstat = UNLOCKED; + vcstatus = UNLOCKED; } else { // Here we should also to some more checking // to see if there are conflicts or not. locker_ = "Locked"; - vcstat = LOCKED; + vcstatus = LOCKED; } break; } @@ -282,7 +283,8 @@ void CVS::registrer(string const & msg) void CVS::checkIn(string const & msg) { doVCCommand("cvs -q commit -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -296,10 +298,15 @@ void CVS::checkOut() void CVS::revert() { - // not sure how to do this... - // rm file - // cvs update - lyxerr << "Sorry not implemented." << endl; + // Reverts to the version in CVS repository and + // gets the updated version from the repository. + string const fil = OnlyFilename(owner_->fileName()); + + doVCCommand("rm -f \"" + fil + "\"; cvs update \"" + fil + "\"", + owner_->filepath); + owner_->markLyxClean(); + owner_->getUser()->owner() + ->getLyXFunc()->Dispatch("buffer-reload"); } @@ -312,7 +319,9 @@ void CVS::undoLast() } -void CVS::getLog(string const &) +void CVS::getLog(string const & tmpf) { - lyxerr << "Sorry not implemented." << endl; + doVCCommand("cvs log \"" + + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, + owner_->filepath); }