X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.cpp;h=5bbc1746b417ae0dd2720dbb4c575a4d8076e637;hb=b8550d11e836e857967a31250e6ca248b2d43f82;hp=fd48b79e8a4173e87fd181387374a96307b6a473;hpb=c6f6d20cdbddcfffea9ec26bd5288b39134f9308;p=lyx.git diff --git a/src/VCBackend.cpp b/src/VCBackend.cpp index fd48b79e8a..5bbc1746b4 100644 --- a/src/VCBackend.cpp +++ b/src/VCBackend.cpp @@ -290,6 +290,55 @@ string RCS::revisionInfo(LyXVC::RevisionInfo const info) } +bool RCS::prepareFileRevision(string const &revis, string & f) +{ + string rev = revis; + + if (isStrInt(rev)) { + int back = convert(rev); + if (back > 0) + return false; + if (back == 0) + rev = version_; + // we care about the last number from revision string + // in case of backward indexing + if (back < 0) { + string cur, base; + cur = rsplit(version_, base , '.' ); + if (!isStrInt(cur)) + return false; + int want = convert(cur) + back; + if (want <= 0) + return false; + + rev = base + "." + convert(want); + } + } + + FileName tmpf = FileName::tempName("lyxvcrev"); + if (tmpf.empty()) { + LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf); + return N_("Error: Could not generate logfile."); + } + + doVCCommand("co -p" + rev + " " + + quoteName(onlyFilename(owner_->absFileName())) + + " > " + quoteName(tmpf.toFilesystemEncoding()), + FileName(owner_->filePath())); + if (tmpf.isFileEmpty()) + return false; + + f = tmpf.absFilename(); + return true; +} + + +bool RCS::prepareFileRevisionEnabled() +{ + return true; +} + + ///////////////////////////////////////////////////////////////////// // // CVS @@ -363,7 +412,7 @@ void CVS::scanMaster() locker_ = "Unlocked"; vcstatus = UNLOCKED; } else { - // Here we should also to some more checking + // Here we should also do some more checking // to see if there are conflicts or not. locker_ = "Locked"; vcstatus = LOCKED; @@ -493,6 +542,18 @@ string CVS::revisionInfo(LyXVC::RevisionInfo const info) } +bool CVS::prepareFileRevision(string const &, string &) +{ + return false; +} + + +bool CVS::prepareFileRevisionEnabled() +{ + return false; +} + + ///////////////////////////////////////////////////////////////////// // // SVN @@ -682,13 +743,13 @@ void SVN::fileLock(bool lock, FileName const & tmpf, string &status) if (!isLocked() && lock) frontend::Alert::error(_("Revision control error."), - _("Error when acquiring write lock.\n" - "Most probably another user is editing\n" + _("Error while acquiring write lock.\n" + "Another user is most probably editing\n" "the current document now!\n" "Also check the access to the repository.")); if (isLocked() && !lock) frontend::Alert::error(_("Revision control error."), - _("Error when releasing write lock.\n" + _("Error while releasing write lock.\n" "Check the access to the repository.")); } @@ -706,7 +767,7 @@ string SVN::checkOut() FileName(owner_->filePath())); string log; - string res = scanLogFile(tmpf, log); + string const res = scanLogFile(tmpf, log); if (!res.empty()) frontend::Alert::error(_("Revision control error."), bformat(_("Error when updating from repository.\n" @@ -982,8 +1043,12 @@ void SVN::getLog(FileName const & tmpf) } -bool SVN::prepareFileRevision(int rev, string & f) +bool SVN::prepareFileRevision(string const & revis, string & f) { + if (!isStrInt(revis)) + return false; + + int rev = convert(revis); if (rev <= 0) if (!getFileRevisionInfo()) return false; @@ -1014,6 +1079,13 @@ bool SVN::prepareFileRevision(int rev, string & f) } +bool SVN::prepareFileRevisionEnabled() +{ + return true; +} + + + bool SVN::toggleReadOnlyEnabled() { return false;