1999-09-27 18:44:28 +00:00
|
|
|
|
// -*- C++ -*-
|
2003-08-23 00:17:00 +00:00
|
|
|
|
/**
|
|
|
|
|
* \file lyxvc.h
|
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
|
*
|
|
|
|
|
* \author Lars Gullik Bj<EFBFBD>nnes
|
|
|
|
|
*
|
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
|
*/
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
1999-11-09 23:52:04 +00:00
|
|
|
|
#ifndef LYX_VC_H
|
|
|
|
|
#define LYX_VC_H
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
2003-11-03 17:47:28 +00:00
|
|
|
|
#include <boost/scoped_ptr.hpp>
|
|
|
|
|
|
2003-10-06 15:43:21 +00:00
|
|
|
|
#include <string>
|
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
2006-10-21 00:16:43 +00:00
|
|
|
|
namespace lyx {
|
|
|
|
|
|
2006-12-02 16:07:15 +00:00
|
|
|
|
namespace support { class FileName; }
|
2006-10-21 00:16:43 +00:00
|
|
|
|
|
1999-11-09 23:52:04 +00:00
|
|
|
|
class VCS;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
class Buffer;
|
|
|
|
|
|
1999-11-09 23:52:04 +00:00
|
|
|
|
/** Version Control for LyX.
|
|
|
|
|
This is the class giving the verison control features to LyX. It is
|
|
|
|
|
intended to support different kinds of version control, but at this point
|
|
|
|
|
we will only support RCS. Later CVS is a likely candidate for support.
|
|
|
|
|
The support in LyX is based loosely upon the version control in GNU Emacs,
|
|
|
|
|
but is not as extensive as that one. See examples/VC.lyx for a simple
|
|
|
|
|
tutorial and manual for the use of the version control system in LyX.
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
1999-11-09 23:52:04 +00:00
|
|
|
|
LyXVC use this algorithm when it searches for VC files:
|
|
|
|
|
for RCS it searches for <filename>,v and RCS/<filename>,v similar
|
|
|
|
|
should be done for CVS. By doing this there doesn't need to be any
|
|
|
|
|
special support for VC in the lyx format, and this is especially good
|
|
|
|
|
when the lyx format will be a subset of LaTeX.
|
|
|
|
|
*/
|
1999-09-27 18:44:28 +00:00
|
|
|
|
class LyXVC {
|
|
|
|
|
public:
|
|
|
|
|
///
|
|
|
|
|
LyXVC();
|
|
|
|
|
///
|
|
|
|
|
~LyXVC();
|
|
|
|
|
/** Not a good name perhaps. This function should be called whenever
|
|
|
|
|
LyX loads a file. This function then checks for a master VC file
|
|
|
|
|
(for RCS this is *,v or RCS/ *,v) if this file is found, the loaded
|
|
|
|
|
file is assumed to be under controll by VC (only RCS so far), and
|
|
|
|
|
the appropiate actions is taken. Returns true if the file is under
|
|
|
|
|
control by a VCS.
|
|
|
|
|
*/
|
2006-12-02 16:07:15 +00:00
|
|
|
|
bool file_found_hook(support::FileName const & fn);
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
/** This function should be run when a file is requested for loading,
|
|
|
|
|
but it does not exist. This function will then check for a VC master
|
|
|
|
|
file with the same name (see above function). If this exists the
|
|
|
|
|
user should be asked if he/her wants to checkout a version for
|
|
|
|
|
viewing/editing. Returns true if the file is under control by a VCS
|
|
|
|
|
and the user wants to view/edit it.
|
|
|
|
|
*/
|
2006-12-02 16:07:15 +00:00
|
|
|
|
static bool file_not_found_hook(support::FileName const & fn);
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
|
|
///
|
1999-11-09 23:52:04 +00:00
|
|
|
|
void buffer(Buffer *);
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
|
|
/// Register the document as an VC file.
|
|
|
|
|
void registrer();
|
|
|
|
|
|
|
|
|
|
/// Unlock and commit changes.
|
|
|
|
|
void checkIn();
|
|
|
|
|
|
|
|
|
|
/// Lock and prepare to edit document.
|
|
|
|
|
void checkOut();
|
|
|
|
|
|
|
|
|
|
/// Revert to last version
|
|
|
|
|
void revert();
|
|
|
|
|
|
|
|
|
|
/// Undo last check-in.
|
|
|
|
|
void undoLast();
|
|
|
|
|
|
2001-02-12 14:09:09 +00:00
|
|
|
|
/**
|
|
|
|
|
* Generate a log file and return the filename.
|
|
|
|
|
* It is the caller's responsibility to unlink the
|
|
|
|
|
* file after use.
|
|
|
|
|
*/
|
2003-10-06 15:43:21 +00:00
|
|
|
|
const std::string getLogFile() const;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
2002-03-21 17:27:08 +00:00
|
|
|
|
///
|
1999-09-27 18:44:28 +00:00
|
|
|
|
void toggleReadOnly();
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
/// Is the document under administration by RCS?
|
|
|
|
|
bool inUse();
|
|
|
|
|
|
|
|
|
|
/// Returns the version number.
|
2003-10-06 15:43:21 +00:00
|
|
|
|
//std::string const & version() const;
|
2001-08-19 14:06:27 +00:00
|
|
|
|
/// Returns the version number.
|
2003-10-06 15:43:21 +00:00
|
|
|
|
std::string const versionString() const;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
|
|
/// Returns the userid of the person who has locked the doc.
|
2003-10-06 15:43:21 +00:00
|
|
|
|
std::string const & locker() const;
|
1999-10-25 14:18:30 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
private:
|
|
|
|
|
///
|
1999-11-09 23:52:04 +00:00
|
|
|
|
Buffer * owner_;
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
///
|
2003-11-03 17:47:28 +00:00
|
|
|
|
boost::scoped_ptr<VCS> vcs;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
2006-10-21 00:16:43 +00:00
|
|
|
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
|
#endif
|