mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 18:08:10 +00:00
VCS: Towards statusbar info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25976 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
d7a30a2ea1
commit
aaa4169ece
@ -1052,7 +1052,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
break;
|
||||
if (lyx_view_->buffer()->lyxvc().inUse()
|
||||
&& !lyx_view_->buffer()->isReadonly()) {
|
||||
lyx_view_->buffer()->lyxvc().checkIn();
|
||||
setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkIn()));
|
||||
reloadBuffer();
|
||||
}
|
||||
break;
|
||||
@ -1062,7 +1062,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
if (!ensureBufferClean(view()))
|
||||
break;
|
||||
if (lyx_view_->buffer()->lyxvc().inUse()) {
|
||||
lyx_view_->buffer()->lyxvc().checkOut();
|
||||
setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkOut()));
|
||||
reloadBuffer();
|
||||
}
|
||||
break;
|
||||
|
@ -142,28 +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;
|
||||
if (vcs->toggleReadOnlyEnabled() && !owner_->isReadonly()) return string();
|
||||
|
||||
LYXERR(Debug::LYXVC, "LyXVC: checkOut");
|
||||
vcs->checkOut();
|
||||
return vcs->checkOut();
|
||||
}
|
||||
|
||||
|
||||
|
@ -67,13 +67,13 @@ public:
|
||||
/// Register the document as an VC file.
|
||||
void registrer();
|
||||
|
||||
/// Unlock and commit changes.
|
||||
void checkIn();
|
||||
/// Unlock and commit changes. Returns log.
|
||||
std::string checkIn();
|
||||
/// Does the current VC supports this operation?
|
||||
bool checkInEnabled();
|
||||
|
||||
/// Lock and prepare to edit document.
|
||||
void checkOut();
|
||||
/// Lock/update and prepare to edit document. Returns log.
|
||||
std::string checkOut();
|
||||
/// Does the current VC supports this operation?
|
||||
bool checkOutEnabled();
|
||||
|
||||
|
@ -170,11 +170,12 @@ void RCS::registrer(string const & msg)
|
||||
}
|
||||
|
||||
|
||||
void RCS::checkIn(string const & msg)
|
||||
string RCS::checkIn(string const & msg)
|
||||
{
|
||||
doVCCommand("ci -q -u -m\"" + msg + "\" "
|
||||
int ret = doVCCommand("ci -q -u -m\"" + msg + "\" "
|
||||
+ quoteName(onlyFilename(owner_->absFileName())),
|
||||
FileName(owner_->filePath()));
|
||||
return ret ? string() : "RCS: Proceeded";
|
||||
}
|
||||
|
||||
bool RCS::checkInEnabled()
|
||||
@ -182,11 +183,12 @@ bool RCS::checkInEnabled()
|
||||
return owner_ && !owner_->isReadonly();
|
||||
}
|
||||
|
||||
void RCS::checkOut()
|
||||
string RCS::checkOut()
|
||||
{
|
||||
owner_->markClean();
|
||||
doVCCommand("co -q -l " + quoteName(onlyFilename(owner_->absFileName())),
|
||||
int ret = doVCCommand("co -q -l " + quoteName(onlyFilename(owner_->absFileName())),
|
||||
FileName(owner_->filePath()));
|
||||
return ret ? string() : "RCS: Proceeded";
|
||||
}
|
||||
|
||||
|
||||
@ -327,11 +329,12 @@ void CVS::registrer(string const & msg)
|
||||
}
|
||||
|
||||
|
||||
void CVS::checkIn(string const & msg)
|
||||
string CVS::checkIn(string const & msg)
|
||||
{
|
||||
doVCCommand("cvs -q commit -m \"" + msg + "\" "
|
||||
int ret = doVCCommand("cvs -q commit -m \"" + msg + "\" "
|
||||
+ quoteName(onlyFilename(owner_->absFileName())),
|
||||
FileName(owner_->filePath()));
|
||||
return ret ? string() : "CVS: Proceeded";
|
||||
}
|
||||
|
||||
|
||||
@ -341,12 +344,13 @@ bool CVS::checkInEnabled()
|
||||
}
|
||||
|
||||
|
||||
void CVS::checkOut()
|
||||
string CVS::checkOut()
|
||||
{
|
||||
// cvs update or perhaps for cvs this should be a noop
|
||||
// we need to detect conflict (eg "C" in output)
|
||||
// before we can do this.
|
||||
lyxerr << "Sorry not implemented." << endl;
|
||||
return string();
|
||||
}
|
||||
|
||||
|
||||
@ -456,12 +460,12 @@ void SVN::registrer(string const & msg)
|
||||
}
|
||||
|
||||
|
||||
void SVN::checkIn(string const & msg)
|
||||
string SVN::checkIn(string const & msg)
|
||||
{
|
||||
FileName tmpf = FileName::tempName("lyxvcout");
|
||||
if (tmpf.empty()){
|
||||
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
||||
return;
|
||||
return N_("Error: Could not generate logfile.");
|
||||
}
|
||||
|
||||
doVCCommand("svn commit -m \"" + msg + "\" "
|
||||
@ -469,13 +473,15 @@ void SVN::checkIn(string const & msg)
|
||||
+ " 2> " + tmpf.toFilesystemEncoding(),
|
||||
FileName(owner_->filePath()));
|
||||
|
||||
string res = scanLogFile(tmpf);
|
||||
string log;
|
||||
string res = scanLogFile(tmpf, log);
|
||||
if (!res.empty())
|
||||
frontend::Alert::error(_("Revision control error."),
|
||||
_("Error when commiting to repository.\n"
|
||||
"You have to manually resolve the problem.\n"
|
||||
"After pressing OK, LyX will reopen the document."));
|
||||
tmpf.erase();
|
||||
return "SVN: " + log;
|
||||
}
|
||||
|
||||
|
||||
@ -487,7 +493,7 @@ bool SVN::checkInEnabled()
|
||||
// FIXME Correctly return code should be checked instead of this.
|
||||
// This would need another solution than just plain startscript.
|
||||
// Hint from Andre': QProcess::readAllStandardError()...
|
||||
string SVN::scanLogFile(FileName const & f)
|
||||
string SVN::scanLogFile(FileName const & f, string & status)
|
||||
{
|
||||
ifstream ifs(f.toFilesystemEncoding().c_str());
|
||||
string line;
|
||||
@ -495,28 +501,31 @@ string SVN::scanLogFile(FileName const & f)
|
||||
while (ifs) {
|
||||
getline(ifs, line);
|
||||
lyxerr << line << "\n";
|
||||
if (prefixIs(line, "C "))
|
||||
return line;
|
||||
if (contains(line, "Commit failed"))
|
||||
if (!line.empty()) status += line + "; ";
|
||||
if (prefixIs(line, "C ") || contains(line, "Commit failed")) {
|
||||
ifs.close();
|
||||
return line;
|
||||
}
|
||||
}
|
||||
ifs.close();
|
||||
return string();
|
||||
}
|
||||
|
||||
|
||||
void SVN::checkOut()
|
||||
string SVN::checkOut()
|
||||
{
|
||||
FileName tmpf = FileName::tempName("lyxvcout");
|
||||
if (tmpf.empty()) {
|
||||
LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
|
||||
return;
|
||||
return N_("Error: Could not generate logfile.");
|
||||
}
|
||||
|
||||
doVCCommand("svn update " + quoteName(onlyFilename(owner_->absFileName()))
|
||||
+ " > " + tmpf.toFilesystemEncoding(),
|
||||
FileName(owner_->filePath()));
|
||||
|
||||
string res = scanLogFile(tmpf);
|
||||
string log;
|
||||
string res = scanLogFile(tmpf, log);
|
||||
if (!res.empty())
|
||||
frontend::Alert::error(_("Revision control error."),
|
||||
bformat(_("Error when updating from repository.\n"
|
||||
@ -524,6 +533,7 @@ void SVN::checkOut()
|
||||
"After pressing OK, LyX will try to reopen resolved document."),
|
||||
from_ascii(res)));
|
||||
tmpf.erase();
|
||||
return "SVN: " + log;
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,12 +34,12 @@ public:
|
||||
|
||||
/// register a file for version control
|
||||
virtual void registrer(std::string const & msg) = 0;
|
||||
/// check in the current revision
|
||||
virtual void checkIn(std::string const & msg) = 0;
|
||||
/// check in the current revision, returns log
|
||||
virtual std::string checkIn(std::string const & msg) = 0;
|
||||
// can be this operation processed in the current RCS?
|
||||
virtual bool checkInEnabled() = 0;
|
||||
/// check out for editing
|
||||
virtual void checkOut() = 0;
|
||||
/// check out for editing, returns log
|
||||
virtual std::string checkOut() = 0;
|
||||
// can be this operation processed in the current RCS?
|
||||
virtual bool checkOutEnabled() = 0;
|
||||
/// revert current edits
|
||||
@ -118,11 +118,11 @@ public:
|
||||
|
||||
virtual void registrer(std::string const & msg);
|
||||
|
||||
virtual void checkIn(std::string const & msg);
|
||||
virtual std::string checkIn(std::string const & msg);
|
||||
|
||||
virtual bool checkInEnabled();
|
||||
|
||||
virtual void checkOut();
|
||||
virtual std::string checkOut();
|
||||
|
||||
virtual bool checkOutEnabled();
|
||||
|
||||
@ -157,11 +157,11 @@ public:
|
||||
|
||||
virtual void registrer(std::string const & msg);
|
||||
|
||||
virtual void checkIn(std::string const & msg);
|
||||
virtual std::string checkIn(std::string const & msg);
|
||||
|
||||
virtual bool checkInEnabled();
|
||||
|
||||
virtual void checkOut();
|
||||
virtual std::string checkOut();
|
||||
|
||||
virtual bool checkOutEnabled();
|
||||
|
||||
@ -199,11 +199,11 @@ public:
|
||||
|
||||
virtual void registrer(std::string const & msg);
|
||||
|
||||
virtual void checkIn(std::string const & msg);
|
||||
virtual std::string checkIn(std::string const & msg);
|
||||
|
||||
virtual bool checkInEnabled();
|
||||
|
||||
virtual void checkOut();
|
||||
virtual std::string checkOut();
|
||||
|
||||
virtual bool checkOutEnabled();
|
||||
|
||||
@ -223,8 +223,8 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void scanMaster();
|
||||
/// Check for error messages in svn output.
|
||||
std::string scanLogFile(support::FileName const & f);
|
||||
/// Check for messages in svn output. Returns error.
|
||||
std::string scanLogFile(support::FileName const & f, std::string & status);
|
||||
|
||||
private:
|
||||
support::FileName file_;
|
||||
|
Loading…
Reference in New Issue
Block a user