4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Lars Gullik Bjønnes
9 * Full author contact details are available in file CREDITS.
15 #include "support/FileName.h"
24 /// A simple version control system interface
27 /// the status of the managed file
35 /// register a file for version control
36 virtual void registrer(std::string const & msg) = 0;
37 /// check in the current revision, returns log
38 virtual std::string checkIn(std::string const & msg) = 0;
39 // can be this operation processed in the current RCS?
40 virtual bool checkInEnabled() = 0;
41 /// check out for editing, returns log
42 virtual std::string checkOut() = 0;
43 // can be this operation processed in the current RCS?
44 virtual bool checkOutEnabled() = 0;
45 /// revert current edits
46 virtual void revert() = 0;
48 virtual void undoLast() = 0;
49 // can be this operation processed in the current RCS?
50 virtual bool undoLastEnabled() = 0;
52 * getLog - read the revision log into the given file
53 * @param fname file name to read into
55 virtual void getLog(support::FileName const &) = 0;
56 /// return the current version description
57 virtual std::string const versionString() const = 0;
58 /// return the current version
59 std::string const & version() const { return version_; }
60 /// return the user who has locked the file
61 std::string const & locker() const { return locker_; }
62 /// set the owning buffer
63 void owner(Buffer * b) { owner_ = b; }
64 /// return the owning buffer
65 Buffer * owner() const { return owner_; }
66 /// return the lock status of this file
67 VCStatus status() const { return vcstatus; }
68 /// do we need special handling for read-only toggling?
69 /// (also used for check-out operation)
70 virtual bool toggleReadOnlyEnabled() = 0;
72 /// parse information from the version file
73 virtual void scanMaster() = 0;
75 // GUI container for doVCCommandCall
76 int doVCCommand(std::string const & cmd, support::FileName const & path);
78 * doVCCommandCall - call out to the version control utility
79 * @param cmd the command to execute
80 * @param path the path from which to execute
83 static int doVCCommandCall(std::string const & cmd, support::FileName const & path);
86 * The master VC file. For RCS this is *,v or RCS/ *,v. master should
89 support::FileName master_;
91 /// The status of the VC controlled file.
95 * The version of the VC file. I am not sure if this can be a
96 * string or if it must be a float/int.
100 /// The user currently keeping the lock on the VC file.
102 /// The buffer using this VC
108 class RCS : public VCS {
112 RCS(support::FileName const & m);
114 /// return the revision file for the given file, if found
115 static support::FileName const findFile(support::FileName const & file);
117 static void retrieve(support::FileName const & file);
119 virtual void registrer(std::string const & msg);
121 virtual std::string checkIn(std::string const & msg);
123 virtual bool checkInEnabled();
125 virtual std::string checkOut();
127 virtual bool checkOutEnabled();
129 virtual void revert();
131 virtual void undoLast();
133 virtual bool undoLastEnabled();
135 virtual void getLog(support::FileName const &);
137 virtual std::string const versionString() const {
138 return "RCS: " + version_;
141 virtual bool toggleReadOnlyEnabled();
144 virtual void scanMaster();
149 class CVS : public VCS {
153 CVS(support::FileName const & m, support::FileName const & f);
155 /// return the revision file for the given file, if found
156 static support::FileName const findFile(support::FileName const & file);
158 virtual void registrer(std::string const & msg);
160 virtual std::string checkIn(std::string const & msg);
162 virtual bool checkInEnabled();
164 virtual std::string checkOut();
166 virtual bool checkOutEnabled();
168 virtual void revert();
170 virtual void undoLast();
172 virtual bool undoLastEnabled();
174 virtual void getLog(support::FileName const &);
176 virtual std::string const versionString() const {
177 return "CVS: " + version_;
180 virtual bool toggleReadOnlyEnabled();
183 virtual void scanMaster();
186 support::FileName file_;
191 class SVN : public VCS {
195 SVN(support::FileName const & m, support::FileName const & f);
197 /// return the revision file for the given file, if found
198 static support::FileName const findFile(support::FileName const & file);
200 virtual void registrer(std::string const & msg);
202 virtual std::string checkIn(std::string const & msg);
204 virtual bool checkInEnabled();
206 virtual std::string checkOut();
208 virtual bool checkOutEnabled();
210 virtual void revert();
212 virtual void undoLast();
214 virtual bool undoLastEnabled();
216 virtual void getLog(support::FileName const &);
218 virtual std::string const versionString() const {
219 return "SVN: " + version_;
222 virtual bool toggleReadOnlyEnabled();
225 virtual void scanMaster();
226 /// Check for messages in svn output. Returns error.
227 std::string scanLogFile(support::FileName const & f, std::string & status);
230 support::FileName file_;
235 #endif // VCBACKEND_H