mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-29 05:01:49 +00:00
implementation for "Compare with older revision" for CVS, correct return value of SVN::prepareFileRevision for failure to create tmp file
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36161 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ba00acbd65
commit
2c7a7e72c2
@ -65,6 +65,40 @@ int VCS::doVCCommand(string const & cmd, FileName const & path, bool reportError
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool VCS::makeRCSRevision(string const &version, string &revis) const
|
||||||
|
{
|
||||||
|
string rev = revis;
|
||||||
|
|
||||||
|
if (isStrInt(rev)) {
|
||||||
|
int back = convert<int>(rev);
|
||||||
|
// if positive use as the last number in the whole revision string
|
||||||
|
if (back > 0) {
|
||||||
|
string base;
|
||||||
|
rsplit(version, base , '.' );
|
||||||
|
rev = base + "." + rev;
|
||||||
|
}
|
||||||
|
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<int>(cur) + back;
|
||||||
|
if (want <= 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
rev = base + "." + convert<string>(want);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
revis = rev;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// RCS
|
// RCS
|
||||||
@ -329,31 +363,8 @@ string RCS::revisionInfo(LyXVC::RevisionInfo const info)
|
|||||||
bool RCS::prepareFileRevision(string const &revis, string & f)
|
bool RCS::prepareFileRevision(string const &revis, string & f)
|
||||||
{
|
{
|
||||||
string rev = revis;
|
string rev = revis;
|
||||||
|
if (!VCS::makeRCSRevision(version_, rev))
|
||||||
if (isStrInt(rev)) {
|
|
||||||
int back = convert<int>(rev);
|
|
||||||
// if positive use as the last number in the whole revision string
|
|
||||||
if (back > 0) {
|
|
||||||
string base;
|
|
||||||
rsplit(version_, base , '.' );
|
|
||||||
rev = base + "." + rev;
|
|
||||||
}
|
|
||||||
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;
|
return false;
|
||||||
int want = convert<int>(cur) + back;
|
|
||||||
if (want <= 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
rev = base + "." + convert<string>(want);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FileName tmpf = FileName::tempName("lyxvcrev_" + rev + "_");
|
FileName tmpf = FileName::tempName("lyxvcrev_" + rev + "_");
|
||||||
if (tmpf.empty()) {
|
if (tmpf.empty()) {
|
||||||
@ -922,15 +933,32 @@ string CVS::revisionInfo(LyXVC::RevisionInfo const info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CVS::prepareFileRevision(string const &, string &)
|
bool CVS::prepareFileRevision(string const & revis, string & f)
|
||||||
{
|
{
|
||||||
|
string rev = revis;
|
||||||
|
if (!VCS::makeRCSRevision(version_, rev))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
FileName tmpf = FileName::tempName("lyxvcrev_" + rev + "_");
|
||||||
|
if (tmpf.empty()) {
|
||||||
|
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
doVCCommandWithOutput("cvs update -p -r" + rev + " "
|
||||||
|
+ getTarget(File),
|
||||||
|
FileName(owner_->filePath()), tmpf);
|
||||||
|
if (tmpf.isFileEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
f = tmpf.absFileName();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CVS::prepareFileRevisionEnabled()
|
bool CVS::prepareFileRevisionEnabled()
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1478,7 +1506,7 @@ bool SVN::prepareFileRevision(string const & revis, string & f)
|
|||||||
FileName tmpf = FileName::tempName("lyxvcrev_" + revname + "_");
|
FileName tmpf = FileName::tempName("lyxvcrev_" + revname + "_");
|
||||||
if (tmpf.empty()) {
|
if (tmpf.empty()) {
|
||||||
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
||||||
return N_("Error: Could not generate logfile.");
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
doVCCommand("svn cat -r " + revname + " "
|
doVCCommand("svn cat -r " + revname + " "
|
||||||
|
@ -91,6 +91,10 @@ protected:
|
|||||||
/// parse information from the version file
|
/// parse information from the version file
|
||||||
virtual void scanMaster() = 0;
|
virtual void scanMaster() = 0;
|
||||||
|
|
||||||
|
/// make a relative version identifier
|
||||||
|
/// suitable for RCS and CVS
|
||||||
|
bool makeRCSRevision(std::string const &version, std::string &revis) const;
|
||||||
|
|
||||||
// GUI container for doVCCommandCall
|
// GUI container for doVCCommandCall
|
||||||
int doVCCommand(std::string const & cmd, support::FileName const & path, bool reportError = true);
|
int doVCCommand(std::string const & cmd, support::FileName const & path, bool reportError = true);
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user