⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svn_commands.h

📁 linux 下的 图形化的 SVN 相当于 VSS
💻 H
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************** *   Copyright (C) 2004 by Eugene Bort                                         * *   esvn@umputun.com                                                     * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         *  ***************************************************************************/#ifndef SVN_COMMANDS_H#define SVN_COMMANDS_H#if ( _WINDOWS || ESVN_WIN )#include <windows.h>#else#include <unistd.h>#endif#include <qobject.h>#include <qtextbrowser.h> #include <qprocess.h>#include <qmessagebox.h>#include <qvbox.h>#include <cstdlib>#include <iostream>#include <qdialog.h> #include <qlabel.h> #include <qtextcodec.h>#include <qapplication.h> #include <qlineedit.h> #include <qcursor.h> #include <qeventloop.h>#include "dlg_busy.h"#include "dlg_auth.h"#include "options.h"#include "esvn_utils.h"#include <vector>using namespace std;class C_SvnCommands : public QWidget {    Q_OBJECT    public:    enum {SC_WAIT = 0x0001, SC_APPEND_USER_PASS=0x0002, SC_HIDE=0x0004,           SC_DISABLE_CURSOR_CHANGE=0x0008, SC_REFRESH = 0x0010};    C_SvnCommands(QTextBrowser* out_win, QWidget *parent=NULL) :         needs_refresh_(false), out_win_(out_win), show_enable_(true), parent_(parent) {        dlg_busy_ = new dlg_busy(this);        dlg_auth_ = new dlg_auth(this);        proc = new QProcess(this);        svn_ = "svn";        is_ready_for_last_command_ = false;        user_ = ""; passw_ = "";        connect(proc, SIGNAL(readyReadStdout()), this, SLOT(readFromStdout()) );        connect(proc, SIGNAL(readyReadStderr()), this, SLOT(readFromStderr()) );        connect(proc, SIGNAL(processExited()), this, SLOT(procFinished()) );    };    int update(const PathSelection& selection, const QString& revision = "") {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("update");        if (revision != "") {            proc->addArgument("-r");            proc->addArgument(revision);        }        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        return execCommand(currwd, SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int log(const C_Path& file_dir_name, bool is_verbouse, bool stop_on_copy, QStringList& out_txt)    {        // Note that svn log command supports multiple arguments        // but there seems to be no use for this feature. -- garrison        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("log");        if (is_verbouse)            proc->addArgument("--verbose");        if (stop_on_copy)            proc->addArgument("--stop-on-copy");        proc->addArgument(file_dir_name.Name());        return execCommand(file_dir_name.Path(), SC_APPEND_USER_PASS, &out_txt);    }    int status(const PathSelection& selection) {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("status");        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        proc->addArgument("--verbose");        return execCommand(currwd, SC_APPEND_USER_PASS | SC_WAIT);    }    int status(const C_Path& file_dir_name, bool show_updates, QStringList& out_txt) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("status");        proc->addArgument(file_dir_name.Name());        proc->addArgument("--quiet");        if (show_updates)             proc->addArgument("--show-updates");        return execCommand(file_dir_name.Path(), SC_APPEND_USER_PASS | SC_WAIT, &out_txt);    }    int status_curr(const QString& currwd, const QString& file_dir_name, QStringList& out_txt) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("status");        proc->addArgument(file_dir_name);        proc->addArgument("-v");        proc->addArgument("-N");        proc->addArgument("--show-updates");        return execCommand(currwd, SC_APPEND_USER_PASS | SC_WAIT | SC_DISABLE_CURSOR_CHANGE | SC_HIDE, &out_txt);    }    int status(const QString& currwd, const QString& file_dir_name, QStringList& out_txt) {        //cout << "status: " << file_dir_name << endl;        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("status");        proc->addArgument(file_dir_name);        proc->addArgument("--verbose");        return execCommand(currwd, SC_APPEND_USER_PASS | SC_WAIT | SC_DISABLE_CURSOR_CHANGE, &out_txt);    }    int info(const PathSelection& selection, QStringList& out_txt) {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("info");        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        return execCommand(currwd, 0, &out_txt);    }    int commit(const QString& currwd, const QString& file_dir_name, QString msg) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("commit");        if (msg == "")  msg = "nomsg";        proc->addArgument("-m"); proc->addArgument(msg);        proc->addArgument(file_dir_name);        return execCommand(currwd, SC_REFRESH | SC_WAIT | SC_APPEND_USER_PASS);    }    int commit(const QString& currwd, const vector<QString>& files_dir, QString msg) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("commit");        if (msg == "") msg = "nomsg";        proc->addArgument("-m"); proc->addArgument(msg);        for (size_t i=0; i<files_dir.size(); i++)             proc->addArgument(files_dir[i]);        return execCommand(currwd, SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int cleanup(const C_Path& file_dir_path) {        proc->clearArguments();        proc->addArgument(svn_);        proc->addArgument("cleanup");        proc->addArgument(file_dir_path.Name());        return execCommand(file_dir_path.Path(), SC_WAIT);    }    int revert(const PathSelection& selection, bool recursive) {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("revert");        if (recursive)             proc->addArgument("--recursive");        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        return execCommand(currwd, SC_REFRESH | SC_WAIT);    }    int resolve(const C_Path& pathname) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("resolved");        proc->addArgument(pathname.Name());        return execCommand(pathname.Path(), SC_REFRESH | SC_WAIT);    }    int add(const PathSelection& selection, bool recursive) {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("add");        if (!recursive)            proc->addArgument("-N");        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        return execCommand(currwd, SC_REFRESH | SC_WAIT);    }    int del(const PathSelection& selection) {        if (selection.empty()) {            return 1;        }        QString currwd = selection[0].Path();        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("delete");        for (size_t i=0; i<selection.size(); i++)             proc->addArgument(selection[i].Name());        return execCommand(currwd, SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int copy(const QString& currwd, const QString& src, const QString &dst, const QString& msg, const QString& rev="") {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("copy");        proc->addArgument(src);        proc->addArgument(dst);        proc->addArgument("-m");        if (msg == "")            proc->addArgument("\"copied\"");        else            proc->addArgument(msg);        if (rev != "") {            proc->addArgument("-r");            proc->addArgument(rev);        }        return execCommand(currwd, SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int move(const QString& currwd, const QString& src, const QString &dst, const QString& msg, const QString& rev="") {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("move");        proc->addArgument(src);        proc->addArgument(dst);        proc->addArgument("-m");        if (msg == "")            proc->addArgument("\"moved\"");        else            proc->addArgument(msg);        if (rev != "") {            proc->addArgument("-r");            proc->addArgument(rev);        }        return execCommand(currwd, SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int switch_cmd(const C_Path& selected, const QString& url, const QString &rev, bool non_recursive) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("switch");        if (rev != "") {            proc->addArgument("-r");            proc->addArgument(rev);        }        if (non_recursive)            proc->addArgument("--non-recursive");        proc->addArgument(url);        proc->addArgument(selected.Name());        return execCommand(selected.Path(), SC_REFRESH | SC_APPEND_USER_PASS | SC_WAIT);    }    int merge(const QString& currwd, const QString& file_dir_name, const QString& first, const QString &second, const QString& wcpath, bool use_rev, bool non_recursive, bool dryrun) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("merge");        if (non_recursive)            proc->addArgument("--non-recursive");        if (dryrun)            proc->addArgument("--dry-run");        if (use_rev) {            proc->addArgument("-r");            proc->addArgument(first+":"+second);            proc->addArgument(file_dir_name);        }        else {            proc->addArgument(first);            proc->addArgument(second);        }        if (!wcpath.isEmpty())             proc->addArgument(wcpath);        return execCommand(currwd, SC_REFRESH | SC_WAIT);    }    int diff(const QString& currwd,             const QString& file_dir_name_1, const QString& file_dir_name_2,              const QString& rev, bool use_external_cmd, bool non_recursive, bool notice_ancestry,              const QString& extensions,  QStringList& out_txt);    int cat(const C_Path& selected, const QString& rev, QStringList& out_txt) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("cat");        proc->addArgument(selected.Name());        if (rev != "") {            proc->addArgument("-r");            proc->addArgument(rev);        }        return execCommand(selected.Path(), SC_APPEND_USER_PASS, &out_txt);    }    int blame(const C_Path& selected, const QString& rev, QStringList& out_txt) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("blame");        proc->addArgument(selected.Name());        if (rev != "") {            proc->addArgument("-r");            proc->addArgument(rev);        }//      proc->addArgument("--non-interactive");        return execCommand(selected.Path(), SC_APPEND_USER_PASS, &out_txt);    }    int checkout(const QString& currwd, const QString& url, const QString& local_path, const QString& user, const QString& passw, const QString &rev, bool non_recursive) {        proc->clearArguments();        proc->addArgument(svn_); proc->addArgument("checkout");        proc->addArgument(url);        proc->addArgument(local_path);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -