X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXVC.cpp;h=5b510ae0f3ac07c7176c5dc3ca602c074aabf893;hb=cca78e3c8ae27431323746abd64f9d7db017099d;hp=aff782494fe2977f7f2d69ed0e75cd40f9b58809;hpb=9383f4c3c6f9cfab2d658701ba66e2b54cd68bea;p=lyx.git diff --git a/src/LyXVC.cpp b/src/LyXVC.cpp index aff782494f..5b510ae0f3 100644 --- a/src/LyXVC.cpp +++ b/src/LyXVC.cpp @@ -17,25 +17,20 @@ #include "LyXVC.h" #include "VCBackend.h" -#include "support/debug.h" #include "Buffer.h" -#include "support/gettext.h" #include "frontends/alert.h" +#include "support/debug.h" #include "support/filetools.h" +#include "support/gettext.h" #include "support/lstrings.h" -#include "support/lyxlib.h" using namespace std; +using namespace lyx::support; namespace lyx { -using support::bformat; -using support::FileName; -using support::makeAbsPath; -using support::tempName; - namespace Alert = frontend::Alert; @@ -65,6 +60,13 @@ bool LyXVC::file_found_hook(FileName const & fn) vcs->owner(owner_); return true; } + // Check if file is under SVN + if (!(found_file = SVN::findFile(fn)).empty()) { + vcs.reset(new SVN(found_file, fn)); + vcs->owner(owner_); + return true; + } + // file is not under any VCS. return false; } @@ -72,11 +74,13 @@ bool LyXVC::file_found_hook(FileName const & fn) bool LyXVC::file_not_found_hook(FileName const & fn) { - // Check if file is under RCS + // Check if file is under RCS. + // This happens if we are trying to load non existent + // file on disk, but existent in ,v version. + // Seems there is no reasonable scenario for adding implementation + // of retrieve for cvs or svn. if (!RCS::findFile(fn).empty()) return true; - if (!CVS::findFile(fn).empty()) - return true; return false; } @@ -101,9 +105,16 @@ void LyXVC::registrer() // it is very likely here that the vcs is not created yet... if (!vcs) { - FileName const cvs_entries(makeAbsPath("CVS/Entries")); + //check in the root directory of the document + FileName const cvs_entries(onlyPath(filename.absFilename()) + "/CVS/Entries"); + FileName const svn_entries(onlyPath(filename.absFilename()) + "/.svn/entries"); - if (cvs_entries.isReadableFile()) { + if (svn_entries.isReadableFile()) { + LYXERR(Debug::LYXVC, "LyXVC: registering " + << to_utf8(filename.displayName()) << " with SVN"); + vcs.reset(new SVN(cvs_entries, filename)); + + } else if (cvs_entries.isReadableFile()) { LYXERR(Debug::LYXVC, "LyXVC: registering " << to_utf8(filename.displayName()) << " with CVS"); vcs.reset(new CVS(cvs_entries, filename)); @@ -131,25 +142,30 @@ void LyXVC::registrer() } -void LyXVC::checkIn() +string LyXVC::checkIn() { LYXERR(Debug::LYXVC, "LyXVC: checkIn"); docstring response; + string log; bool ok = Alert::askForText(response, _("LyX VC: Log Message")); if (ok) { if (response.empty()) response = _("(no log message)"); - vcs->checkIn(to_utf8(response)); + log = vcs->checkIn(to_utf8(response)); } else { LYXERR(Debug::LYXVC, "LyXVC: user cancelled"); } + return log; } -void LyXVC::checkOut() +string LyXVC::checkOut() { + //RCS allows checkOut only in ReadOnly mode + if (vcs->toggleReadOnlyEnabled() && !owner_->isReadonly()) return string(); + LYXERR(Debug::LYXVC, "LyXVC: checkOut"); - vcs->checkOut(); + return vcs->checkOut(); } @@ -159,8 +175,8 @@ void LyXVC::revert() docstring const file = owner_->fileName().displayName(20); docstring text = bformat(_("Reverting to the stored version of the " - "document %1$s will lose all current changes.\n\n" - "Do you want to revert to the saved version?"), file); + "document %1$s will lose all current changes.\n\n" + "Do you want to revert to the older version?"), file); int const ret = Alert::prompt(_("Revert to stored version of document?"), text, 0, 1, _("&Revert"), _("&Cancel")); @@ -177,6 +193,9 @@ void LyXVC::undoLast() void LyXVC::toggleReadOnly() { + if (!vcs->toggleReadOnlyEnabled()) + return; + switch (vcs->status()) { case VCS::UNLOCKED: LYXERR(Debug::LYXVC, "LyXVC: toggle to locked"); @@ -221,7 +240,7 @@ string const LyXVC::getLogFile() const if (!vcs) return string(); - FileName const tmpf(tempName(FileName(), "lyxvclog")); + FileName const tmpf = FileName::tempName("lyxvclog"); if (tmpf.empty()) { LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf); return string(); @@ -232,4 +251,22 @@ string const LyXVC::getLogFile() const } +bool LyXVC::checkOutEnabled() +{ + return vcs && vcs->checkOutEnabled(); +} + + +bool LyXVC::checkInEnabled() +{ + return vcs && vcs->checkInEnabled(); +} + + +bool LyXVC::undoLastEnabled() +{ + return vcs && vcs->undoLastEnabled(); +} + + } // namespace lyx