mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 18:08:10 +00:00
VCS: RCS implementation for date and author insetinfo was missing.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39231 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
3201f7a963
commit
d958d89b35
@ -1,4 +1,4 @@
|
||||
#LyX 2.0 created this file. For more info see http://www.lyx.org/
|
||||
#LyX 2.1 created this file. For more info see http://www.lyx.org/
|
||||
\lyxformat 413
|
||||
\begin_document
|
||||
\begin_header
|
||||
@ -19434,7 +19434,13 @@ Revision info
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
LyX supports RCS version number information (only), see
|
||||
LyX supports RCS version number, author name, date and time of last commit.
|
||||
All those are extracted from
|
||||
\family typewriter
|
||||
rlog -r <file-name>
|
||||
\family default
|
||||
.
|
||||
For other details see
|
||||
\begin_inset CommandInset ref
|
||||
LatexCommand ref
|
||||
reference "sub:VCS-Revision-Information"
|
||||
|
@ -352,14 +352,73 @@ bool RCS::toggleReadOnlyEnabled()
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
string RCS::revisionInfo(LyXVC::RevisionInfo const info)
|
||||
{
|
||||
if (info == LyXVC::File)
|
||||
return version_;
|
||||
// fill the rest of the attributes for a single file
|
||||
if (rev_date_cache_.empty())
|
||||
if (!getRevisionInfo())
|
||||
return string();
|
||||
|
||||
switch (info) {
|
||||
case LyXVC::Author:
|
||||
return rev_author_cache_;
|
||||
case LyXVC::Date:
|
||||
return rev_date_cache_;
|
||||
case LyXVC::Time:
|
||||
return rev_time_cache_;
|
||||
default: ;
|
||||
}
|
||||
|
||||
return string();
|
||||
}
|
||||
|
||||
|
||||
bool RCS::getRevisionInfo()
|
||||
{
|
||||
FileName tmpf = FileName::tempName("lyxvcout");
|
||||
if (tmpf.empty()) {
|
||||
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
||||
return false;
|
||||
}
|
||||
doVCCommand("rlog -r " + quoteName(onlyFileName(owner_->absFileName()))
|
||||
+ " > " + quoteName(tmpf.toFilesystemEncoding()),
|
||||
FileName(owner_->filePath()));
|
||||
|
||||
if (tmpf.empty())
|
||||
return false;
|
||||
|
||||
ifstream ifs(tmpf.toFilesystemEncoding().c_str());
|
||||
string line;
|
||||
|
||||
// we reached to the entry, i.e. after initial log message
|
||||
bool entry=false;
|
||||
// line with critical info, e.g:
|
||||
//"date: 2011/07/02 11:02:54; author: sanda; state: Exp; lines: +17 -2"
|
||||
string result;
|
||||
|
||||
while (ifs) {
|
||||
getline(ifs, line);
|
||||
LYXERR(Debug::LYXVC, line);
|
||||
if (entry && prefixIs(line, "date:")) {
|
||||
result = line;
|
||||
break;
|
||||
}
|
||||
if (prefixIs(line, "revision"))
|
||||
entry = true;
|
||||
}
|
||||
if (result.empty())
|
||||
return false;
|
||||
|
||||
rev_date_cache_ = token(result, ' ', 1);
|
||||
rev_time_cache_ = rtrim(token(result, ' ', 2), ";");
|
||||
rev_author_cache_ = trim(token(token(result, ';', 1), ':', 1));
|
||||
|
||||
return !rev_author_cache_.empty();
|
||||
}
|
||||
|
||||
bool RCS::prepareFileRevision(string const &revis, string & f)
|
||||
{
|
||||
string rev = revis;
|
||||
|
@ -176,6 +176,7 @@ public:
|
||||
protected:
|
||||
virtual void scanMaster();
|
||||
private:
|
||||
bool getRevisionInfo();
|
||||
/**
|
||||
* The version of the VC file. I am not sure if this can be a
|
||||
* string or if it must be a float/int.
|
||||
@ -183,6 +184,12 @@ private:
|
||||
std::string version_;
|
||||
/// The user currently keeping the lock on the VC file (or "Unlocked").
|
||||
std::string locker_;
|
||||
/// Cache for revision info.
|
||||
std::string rev_date_cache_;
|
||||
///
|
||||
std::string rev_time_cache_;
|
||||
///
|
||||
std::string rev_author_cache_;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user