// -*- C++ -*-
+/**
+ * \file vc-backend.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
#ifndef VC_BACKEND_H
#define VC_BACKEND_H
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "support/filename.h"
-#include "LString.h"
-#include "support/syscall.h"
+#include <string>
+
+
+namespace lyx {
class Buffer;
-///
+/// A simple version control system interface
class VCS {
public:
- ///
+ /// the status of the managed file
enum VCStatus {
- ///
UNLOCKED,
- ///
LOCKED
};
- ///
+
virtual ~VCS() {}
- ///
- virtual void scanMaster() = 0;
- ///
- virtual void registrer(string const & msg) = 0;
- ///
- virtual void checkIn(string const & msg) = 0;
- ///
+
+ /// 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 out for editing
virtual void checkOut() = 0;
- ///
+ /// revert current edits
virtual void revert() = 0;
- ///
+ /// FIXME
virtual void undoLast() = 0;
- ///
- virtual void getLog(string const &) = 0;
- ///
- string const & version() const { return version_; }
- ///
- string const & locker() const { return locker_; }
- ///
+ /**
+ * getLog - read the revision log into the given file
+ * @param fname file name to read into
+ */
+ virtual void getLog(support::FileName const &) = 0;
+ /// return the current version description
+ virtual std::string const versionString() const = 0;
+ /// return the current version
+ std::string const & version() const {
+ return version_;
+ }
+ /// return the user who has locked the file
+ std::string const & locker() const { return locker_; }
+ /// set the owning buffer
void owner(Buffer * b) { owner_ = b; }
- ///
+ /// return the owning buffer
Buffer * owner() const { return owner_; }
- ///
+ /// return the lock status of this file
VCStatus status() const { return vcstatus; }
protected:
- ///
- static int doVCCommand(string const &, string const &);
+ /// parse information from the version file
+ virtual void scanMaster() = 0;
+
+ /**
+ * doVCCommand - call out to the version control utility
+ * @param cmd the command to execute
+ * @param path the path from which to execute
+ * @return exit status
+ */
+ static int doVCCommand(std::string const & cmd, support::FileName const & path);
+
+ /**
+ * The master VC file. For RCS this is *,v or RCS/ *,v. master should
+ * have full path.
+ */
+ support::FileName master_;
- /** The master VC file. For RCS this is *,v or RCS/ *,v. master should
- have full path.
- */
- string master_;
-
/// The status of the VC controlled file.
VCStatus vcstatus;
-
- /** The version of the VC file. I am not sure if this can be a
- string of if it must be a
- float/int. */
- string version_;
-
+
+ /**
+ * The version of the VC file. I am not sure if this can be a
+ * string or if it must be a float/int.
+ */
+ std::string version_;
+
/// The user currently keeping the lock on the VC file.
- string locker_;
+ std::string locker_;
/// The buffer using this VC
Buffer * owner_;
};
///
class RCS : public VCS {
public:
- ///
+
explicit
- RCS(string const & m);
- ///
- static string const find_file(string const & file);
- ///
- static void retrive(string const & file);
- ///
- virtual void scanMaster();
- ///
- virtual void registrer(string const & msg);
- ///
- virtual void checkIn(string const & msg);
- ///
+ RCS(support::FileName const & m);
+
+ /// return the revision file for the given file, if found
+ static support::FileName const find_file(support::FileName const & file);
+
+ static void retrieve(support::FileName const & file);
+
+ virtual void registrer(std::string const & msg);
+
+ virtual void checkIn(std::string const & msg);
+
virtual void checkOut();
- ///
+
virtual void revert();
- ///
+
virtual void undoLast();
- ///
- virtual void getLog(string const &);
+
+ virtual void getLog(support::FileName const &);
+
+ virtual std::string const versionString() const {
+ return "RCS: " + version_;
+ }
+
+protected:
+ virtual void scanMaster();
};
public:
///
explicit
- CVS(string const & m, string const & f);
- ///
- static string const find_file(string const & file);
- ///
- virtual void scanMaster();
- ///
- virtual void registrer(string const & msg);
- ///
- virtual void checkIn(string const & msg);
- ///
+ CVS(support::FileName const & m, support::FileName const & f);
+
+ /// return the revision file for the given file, if found
+ static support::FileName const find_file(support::FileName const & file);
+
+ virtual void registrer(std::string const & msg);
+
+ virtual void checkIn(std::string const & msg);
+
virtual void checkOut();
- ///
+
virtual void revert();
- ///
+
virtual void undoLast();
- ///
- virtual void getLog(string const &);
+
+ virtual void getLog(support::FileName const &);
+
+ virtual std::string const versionString() const {
+ return "CVS: " + version_;
+ }
+
+protected:
+ virtual void scanMaster();
+
private:
- string file_;
+ support::FileName file_;
};
-#endif
+
+} // namespace lyx
+
+#endif // VCBACKEND_H