X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fvc-backend.C;h=2d5c8383d6426ea96a0d6651ba088cc4c00b0484;hb=d4ee9c38b6aa45146f67658352623bcbc3e0ad9b;hp=b23f30e14f0683b0800033dddf63768bbbee0762;hpb=ee1229d7431f99788d04e99fcd8c57de69b4acaf;p=lyx.git diff --git a/src/vc-backend.C b/src/vc-backend.C index b23f30e14f..2d5c8383d6 100644 --- a/src/vc-backend.C +++ b/src/vc-backend.C @@ -5,7 +5,6 @@ #endif #include -using std::ifstream; #include "vc-backend.h" #include "debug.h" @@ -13,17 +12,21 @@ using std::ifstream; #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" +using std::endl; +using std::ifstream; +using std::getline; -int VCS::doVCCommand(string const & cmd) +int VCS::doVCCommand(string const & cmd, string const & path) { lyxerr[Debug::LYXVC] << "doVCCommand: " << cmd << endl; Systemcalls one; - Path p(owner_->filepath); - int ret = one.startscript(Systemcalls::System, cmd); + Path p(path); + int const ret = one.startscript(Systemcalls::System, cmd); return ret; } @@ -35,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. @@ -63,6 +66,15 @@ string RCS::find_file(string const & file) } +void RCS::retrive(string const & file) +{ + lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrive.\n\t" << file << endl; + VCS::doVCCommand("co -q -r \"" + + file + "\"", + string()); +} + + void RCS::scanMaster() { lyxerr[Debug::LYXVC] << "LyXVC::RCS: scanMaster." << endl; @@ -95,7 +107,7 @@ void RCS::scanMaster() // get locker here if (contains(token, ";")) { locker_ = "Unlocked"; - vcstat = UNLOCKED; + vcstatus = UNLOCKED; continue; } string tmpt, s1, s2; @@ -107,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, ";")); @@ -133,7 +145,7 @@ void RCS::registrer(string const & msg) cmd += "\" \""; cmd += OnlyFilename(owner_->fileName()); cmd += "\""; - doVCCommand(cmd); + doVCCommand(cmd, owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -141,7 +153,7 @@ void RCS::registrer(string const & msg) void RCS::checkIn(string const & msg) { doVCCommand("ci -q -u -m\"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -150,7 +162,7 @@ void RCS::checkOut() { owner_->markLyxClean(); doVCCommand("co -q -l \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -158,7 +170,7 @@ void RCS::checkOut() void RCS::revert() { doVCCommand("co -f -u" + version() + " \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); // We ignore changes and just reload! owner_->markLyxClean(); owner_->getUser()->owner() @@ -170,14 +182,15 @@ void RCS::undoLast() { lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl; doVCCommand("rcs -o" + version() + " \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filepath); } void RCS::getLog(string const & tmpf) { doVCCommand("rlog \"" - + OnlyFilename(owner_->fileName()) + "\" > " + tmpf); + + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, owner_->filepath); } @@ -189,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 @@ -247,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; } @@ -263,7 +275,7 @@ void CVS::scanMaster() void CVS::registrer(string const & msg) { doVCCommand("cvs -q add -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -271,7 +283,8 @@ void CVS::registrer(string const & msg) void CVS::checkIn(string const & msg) { doVCCommand("cvs -q commit -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\""); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filepath); owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); } @@ -285,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"); } @@ -301,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); }