X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fvc-backend.C;h=c4336d48e7fda94429b2f919bbf1a9fba06c9c3f;hb=98c966c64594611e469313314abd1e59524adb4a;hp=7b042baf465ccd732ab44a0f4df186d713f0bd46;hpb=4abaf6ab919465346a731e83712df7c766551c80;p=lyx.git diff --git a/src/vc-backend.C b/src/vc-backend.C index 7b042baf46..c4336d48e7 100644 --- a/src/vc-backend.C +++ b/src/vc-backend.C @@ -4,18 +4,22 @@ #pragma implementation #endif -#include - #include "vc-backend.h" #include "debug.h" +#include "buffer.h" +#include "BufferView.h" +#include "LyXView.h" +#include "lyxfunc.h" + #include "support/FileInfo.h" #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" +#include "support/lstrings.h" +#include "support/systemcall.h" + +#include using std::endl; using std::ifstream; @@ -24,9 +28,9 @@ using std::getline; int VCS::doVCCommand(string const & cmd, string const & path) { lyxerr[Debug::LYXVC] << "doVCCommand: " << cmd << endl; - Systemcalls one; + Systemcall one; Path p(path); - int const ret = one.startscript(Systemcalls::System, cmd); + int const ret = one.startscript(Systemcall::Wait, cmd); return ret; } @@ -66,9 +70,9 @@ string const RCS::find_file(string const & file) } -void RCS::retrive(string const & file) +void RCS::retrieve(string const & file) { - lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrive.\n\t" << file << endl; + lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrieve.\n\t" << file << endl; VCS::doVCCommand("co -q -r \"" + file + "\"", string()); @@ -110,7 +114,9 @@ void RCS::scanMaster() vcstatus = UNLOCKED; continue; } - string tmpt, s1, s2; + string tmpt; + string s1; + string s2; do { ifs >> tmpt; s1 = strip(tmpt, ';'); @@ -123,7 +129,7 @@ void RCS::scanMaster() break; } } while (!contains(tmpt, ";")); - + } else if (token == "comment") { // we don't need to read any further than this. read_enough = true; @@ -134,7 +140,6 @@ void RCS::scanMaster() << endl; } } - version_ = "RCS: " + version_; } @@ -145,16 +150,16 @@ void RCS::registrer(string const & msg) cmd += "\" \""; cmd += OnlyFilename(owner_->fileName()); cmd += "\""; - doVCCommand(cmd, owner_->filepath); - owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); + doVCCommand(cmd, owner_->filePath()); + owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD); } void RCS::checkIn(string const & msg) { doVCCommand("ci -q -u -m\"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); - owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath()); + owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD); } @@ -162,19 +167,19 @@ void RCS::checkOut() { owner_->markLyxClean(); doVCCommand("co -q -l \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); - owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath()); + owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD); } void RCS::revert() { doVCCommand("co -f -u" + version() + " \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath()); // We ignore changes and just reload! owner_->markLyxClean(); owner_->getUser()->owner() - ->getLyXFunc()->Dispatch("buffer-reload"); + ->getLyXFunc()->dispatch(LFUN_MENURELOAD); } @@ -182,14 +187,15 @@ void RCS::undoLast() { lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl; doVCCommand("rcs -o" + version() + " \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filePath()); } void RCS::getLog(string const & tmpf) { doVCCommand("rlog \"" - + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, owner_->filepath); + + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, owner_->filePath()); } @@ -235,21 +241,21 @@ void CVS::scanMaster() lyxerr[Debug::LYXVC] << "\tlooking for `" << tmpf << "'" << endl; string line; LRegex reg("/(.*)/(.*)/(.*)/(.*)/(.*)"); - while(getline(ifs, line)) { + while (getline(ifs, line)) { lyxerr[Debug::LYXVC] << "\t line: " << line << endl; if (contains(line, tmpf)) { // Ok extract the fields. LRegex::SubMatches const & sm = reg.exec(line); //sm[0]; // whole matched string //sm[1]; // filename - version_ = "CVS: "; - version_ += LSubstring(line, sm[2].first, + version_ = LSubstring(line, sm[2].first, sm[2].second); string file_date = LSubstring(line, sm[3].first, sm[3].second); //sm[4]; // options //sm[5]; // tag or tagdate FileInfo fi(file_); + // FIXME: must double check file is stattable/existing time_t mod = fi.getModificationTime(); string mod_date = strip(asctime(gmtime(&mod)), '\n'); lyxerr[Debug::LYXVC] @@ -274,16 +280,17 @@ void CVS::scanMaster() void CVS::registrer(string const & msg) { doVCCommand("cvs -q add -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); - owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); + + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath()); + owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD); } void CVS::checkIn(string const & msg) { doVCCommand("cvs -q commit -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath); - owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload"); + + OnlyFilename(owner_->fileName()) + "\"", + owner_->filePath()); + owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD); } @@ -296,10 +303,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(LFUN_MENURELOAD); } @@ -312,7 +324,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()); }