* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
/** 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.
+ intended to support different kinds of version control.
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
+ but is not as extensive as that one. See Extended Manual for a simple
tutorial and manual for the use of the version control system in LyX.
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
+ for RCS it searches for <filename>,v and RCS/<filename>,v similarly
+ CVS/Entries for cvs and .svn/entries. 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.
*/
~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 ; for CVS this is CVS/Entries) if this
- file is found, the loaded file is assumed to be under controll by VC
- (only RCS and CVS so far), and the appropiate actions is taken.
+ RCS this is *,v or RCS/ *,v ; for CVS this is CVS/Entries and .svn/entries
+ for SVN) if this file or entry is found, the loaded file is assumed to be
+ under controll by VC, and the appropiate actions is taken.
Returns true if the file is under control by a VCS.
*/
bool file_found_hook(support::FileName const & fn);
void setBuffer(Buffer *);
/// Register the document as an VC file.
- void registrer();
+ bool 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();
+ bool checkInEnabled() const;
- /// 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();
+ bool checkOutEnabled() const;
+
+ /// Synchronize the whole archive with repository
+ std::string repoUpdate();
+ /// Does the current VC supports this operation?
+ bool repoUpdateEnabled() const;
+
+ /**
+ * Toggle locking property of the edited file,
+ * i.e. whether the file uses locking mechanism.
+ */
+ std::string lockingToggle();
+ /// Does the current VC support this operation?
+ bool lockingToggleEnabled() const;
/// Revert to last version
void revert();
/// Undo last check-in.
void undoLast();
/// Does the current VC supports this operation?
- bool undoLastEnabled();
+ bool undoLastEnabled() const;
/**
* Generate a log file and return the filename.
*/
const std::string getLogFile() const;
- ///
+ /**
+ * We do not support this generally. In RCS/SVN file read-only flag
+ * is often connected with locking state and one has to be careful to
+ * keep things in synchro once we would allow user to toggle
+ * read-only flags.
+ */
void toggleReadOnly();
- /// Is the document under administration by RCS?
- bool inUse();
+ /// Is the document under administration by VCS?
+ bool inUse() const;
/// Returns the version number.
//std::string const & version() const;