Wrapped "clone" "diff" "commit"
FossilOrigin-Name: 1207f87a560c9d077c00367a4270c693f7cceee0
This commit is contained in:
		
							
								
								
									
										18
									
								
								manifest
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								manifest
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| C Wrapped\s"push"\sand\s"pull" | C Wrapped\s"clone"\s"diff"\s"commit" | ||||||
| D 2015-04-26T18:26:39.720 | D 2015-04-26T18:55:05.691 | ||||||
| F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 | F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 | ||||||
| F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b | F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b | ||||||
| F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b | F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b | ||||||
| @@ -184,8 +184,8 @@ F rsrc/icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b | |||||||
| F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 | F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 | ||||||
| F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342 | F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342 | ||||||
| F rsrc/resources.qrc 4098be128fd6c045db933d041fe8844b14643a6f | F rsrc/resources.qrc 4098be128fd6c045db933d041fe8844b14643a6f | ||||||
| F src/Bridge.cpp 4fbc6cbebfa20008c575e0d52d4eafe4b18caf99 | F src/Bridge.cpp 08019d2826accd56f370981aba8ede3f04c82ccf | ||||||
| F src/Bridge.h 8c266069dfe6cfb1a870b09e20c568fb506a0829 | F src/Bridge.h 329b3e81008d779f4d100f370b41601d49ca025a | ||||||
| F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056 | F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056 | ||||||
| F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597 | F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597 | ||||||
| F src/CloneDialog.cpp 812ef7d361c16da21540b7047c9d4d5e74f18539 | F src/CloneDialog.cpp 812ef7d361c16da21540b7047c9d4d5e74f18539 | ||||||
| @@ -200,8 +200,8 @@ F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 | |||||||
| F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df | F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df | ||||||
| F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c | F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c | ||||||
| F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 | F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 | ||||||
| F src/MainWindow.cpp e585e885e496697d180e021deb514b04acdce659 | F src/MainWindow.cpp 9016287b46f4d057ea84f438b043723ae611367a | ||||||
| F src/MainWindow.h 11328bb6544faca0175b64a88809f13e1da0f488 | F src/MainWindow.h a727aea9b2b453c79682f61157b38a76a873060a | ||||||
| F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4 | F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4 | ||||||
| F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43 | F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43 | ||||||
| F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca | F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca | ||||||
| @@ -215,7 +215,7 @@ F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f | |||||||
| F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d | F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d | ||||||
| F ui/MainWindow.ui 8677f5c8bca5bf7561d5f64bfdd0cef5157c6ac7 | F ui/MainWindow.ui 8677f5c8bca5bf7561d5f64bfdd0cef5157c6ac7 | ||||||
| F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b | F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b | ||||||
| P 8d81e12735d7c999ea5fca07c4c1683b68a5ad66 | P ab5fd401a09cc503168a86761b95c28e52d2875a | ||||||
| R bea6f8fdaa1d3a52307231819083669e | R 7a32a7081f2b847eaec01d12ff3d24ec | ||||||
| U kostas | U kostas | ||||||
| Z ced14dfb75cb5108cd5ba6e92482ad2b | Z e11abbb88941df5fe0d707b72a7e29b8 | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| ab5fd401a09cc503168a86761b95c28e52d2875a | 1207f87a560c9d077c00367a4270c693f7cceee0 | ||||||
| @@ -121,6 +121,81 @@ bool Bridge::pullRepository() | |||||||
| 	return runFossil(QStringList() << "pull"); | 	return runFossil(QStringList() << "pull"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | bool Bridge::cloneRepository(const QString& repository, const QUrl& url, const QUrl& proxyUrl) | ||||||
|  | { | ||||||
|  | 	// Actual command | ||||||
|  | 	QStringList cmd = QStringList() << "clone"; | ||||||
|  |  | ||||||
|  | 	// Log Command | ||||||
|  | 	QStringList logcmd = QStringList() << "fossil" << "clone"; | ||||||
|  |  | ||||||
|  | 	QString source = url.toString(); | ||||||
|  | 	QString logsource = url.toString(QUrl::RemovePassword); | ||||||
|  | 	if(url.isLocalFile()) | ||||||
|  | 	{ | ||||||
|  | 		source = url.toLocalFile(); | ||||||
|  | 		logsource = source; | ||||||
|  | 	} | ||||||
|  | 	cmd << source << repository; | ||||||
|  | 	logcmd << logsource << repository; | ||||||
|  |  | ||||||
|  | 	if(!proxyUrl.isEmpty()) | ||||||
|  | 	{ | ||||||
|  | 		cmd << "--proxy" << proxyUrl.toString(); | ||||||
|  | 		logcmd << "--proxy" << proxyUrl.toString(QUrl::RemovePassword); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	log("<b>>"+logcmd.join(" ")+"</b><br>", true); | ||||||
|  |  | ||||||
|  | 	// Clone Repo | ||||||
|  | 	if(!runFossil(cmd, 0, RUNFLAGS_SILENT_INPUT)) | ||||||
|  | 		return false; | ||||||
|  |  | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | bool Bridge::diffFile(const QString &repoFile) | ||||||
|  | { | ||||||
|  | 	// Run the diff detached | ||||||
|  | 	return runFossil(QStringList() << "gdiff" << QuotePath(repoFile), 0, RUNFLAGS_DETACHED); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | bool Bridge::commitFiles(const QStringList& fileList, const QString& comment) | ||||||
|  | { | ||||||
|  | 	// Do commit | ||||||
|  | 	QString comment_fname; | ||||||
|  | 	{ | ||||||
|  | 		QTemporaryFile temp_file; | ||||||
|  | 		if(!temp_file.open()) | ||||||
|  | 			return false; | ||||||
|  |  | ||||||
|  | 		comment_fname = temp_file.fileName(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	QFile comment_file(comment_fname); | ||||||
|  | 	if(!comment_file.open(QIODevice::WriteOnly)) | ||||||
|  | 		return false; | ||||||
|  |  | ||||||
|  | 	// Write BOM | ||||||
|  | 	comment_file.write(reinterpret_cast<const char *>(UTF8_BOM), sizeof(UTF8_BOM)); | ||||||
|  |  | ||||||
|  | 	// Write Comment | ||||||
|  | 	comment_file.write(comment.toUtf8()); | ||||||
|  | 	comment_file.close(); | ||||||
|  |  | ||||||
|  | 	// Generate fossil parameters. | ||||||
|  | 	QStringList params; | ||||||
|  | 	params << "commit" << "--message-file" << QuotePath(comment_fname); | ||||||
|  | 	params << QuotePaths(fileList); | ||||||
|  |  | ||||||
|  | 	runFossil(params); | ||||||
|  | 	QFile::remove(comment_fname); | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
| //------------------------------------------------------------------------------ | //------------------------------------------------------------------------------ | ||||||
| bool Bridge::stashList(stashmap_t& stashes) | bool Bridge::stashList(stashmap_t& stashes) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -88,13 +88,18 @@ public: | |||||||
| 	bool closeRepository(); | 	bool closeRepository(); | ||||||
| 	bool pushRepository(); | 	bool pushRepository(); | ||||||
| 	bool pullRepository(); | 	bool pullRepository(); | ||||||
|  | 	bool cloneRepository(const QString &repository, const QUrl &url, const QUrl &proxyUrl); | ||||||
|  |  | ||||||
| 	bool uiRunning() const; | 	bool uiRunning() const; | ||||||
| 	bool startUI(const QString &httpPort); | 	bool startUI(const QString &httpPort); | ||||||
| 	void stopUI(); | 	void stopUI(); | ||||||
|  |  | ||||||
| 	bool listFiles(QStringList& files); | 	bool listFiles(QStringList &files); | ||||||
| 	bool stashList(stashmap_t &stashes); | 	bool stashList(stashmap_t &stashes); | ||||||
|  | 	bool diffFile(const QString &repoFile); | ||||||
|  | 	bool commitFiles(const QStringList &fileList, const QString &comment); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| private: | private: | ||||||
| 	void log(const QString &text, bool isHTML=false) | 	void log(const QString &text, bool isHTML=false) | ||||||
|   | |||||||
| @@ -524,6 +524,7 @@ void MainWindow::on_actionCloneRepository_triggered() | |||||||
|  |  | ||||||
| 	stopUI(); | 	stopUI(); | ||||||
|  |  | ||||||
|  | #ifndef BRIDGE_ENABLED | ||||||
| 	// Actual command | 	// Actual command | ||||||
| 	QStringList cmd = QStringList() << "clone"; | 	QStringList cmd = QStringList() << "clone"; | ||||||
|  |  | ||||||
| @@ -550,6 +551,9 @@ void MainWindow::on_actionCloneRepository_triggered() | |||||||
|  |  | ||||||
| 	// Clone Repo | 	// Clone Repo | ||||||
| 	if(!runFossil(cmd, 0, RUNFLAGS_SILENT_INPUT)) | 	if(!runFossil(cmd, 0, RUNFLAGS_SILENT_INPUT)) | ||||||
|  | #else | ||||||
|  | 	if(!bridge.cloneRepository(repository, url, url_proxy)) | ||||||
|  | #endif | ||||||
| 	{ | 	{ | ||||||
| 		QMessageBox::critical(this, tr("Error"), tr("Could not clone the repository"), QMessageBox::Ok); | 		QMessageBox::critical(this, tr("Error"), tr("Could not clone the repository"), QMessageBox::Ok); | ||||||
| 		return; | 		return; | ||||||
| @@ -1736,10 +1740,14 @@ void MainWindow::getStashViewSelection(QStringList &stashNames, bool allIfEmpty) | |||||||
| } | } | ||||||
|  |  | ||||||
| //------------------------------------------------------------------------------ | //------------------------------------------------------------------------------ | ||||||
| bool MainWindow::diffFile(QString repoFile) | bool MainWindow::diffFile(const QString &repoFile) | ||||||
| { | { | ||||||
|  | #ifndef BRIDGE_ENABLED | ||||||
| 	// Run the diff detached | 	// Run the diff detached | ||||||
| 	return runFossil(QStringList() << "gdiff" << QuotePath(repoFile), 0, RUNFLAGS_DETACHED); | 	return runFossil(QStringList() << "gdiff" << QuotePath(repoFile), 0, RUNFLAGS_DETACHED); | ||||||
|  | #else | ||||||
|  | 	return bridge.diffFile(repoFile); | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
| //------------------------------------------------------------------------------ | //------------------------------------------------------------------------------ | ||||||
| @@ -1956,6 +1964,7 @@ void MainWindow::on_actionCommit_triggered() | |||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
| 	// Do commit | 	// Do commit | ||||||
|  | #ifndef BRIDGE_ENABLED | ||||||
| 	QString comment_fname; | 	QString comment_fname; | ||||||
| 	{ | 	{ | ||||||
| 		QTemporaryFile temp_file; | 		QTemporaryFile temp_file; | ||||||
| @@ -1997,6 +2006,21 @@ void MainWindow::on_actionCommit_triggered() | |||||||
|  |  | ||||||
| 	runFossil(params); | 	runFossil(params); | ||||||
| 	QFile::remove(comment_fname); | 	QFile::remove(comment_fname); | ||||||
|  | #else | ||||||
|  | 	QStringList files; | ||||||
|  |  | ||||||
|  | 	// When a subset of files has been selected, explicitely specify each file. | ||||||
|  | 	// Otherwise all files will be implicitly committed by fossil. This is necessary | ||||||
|  | 	// when committing after a merge where fossil thinks that we are trying to do | ||||||
|  | 	// a partial commit which is not permitted. | ||||||
|  | 	QStringList all_modified_files; | ||||||
|  | 	getAllFilenames(all_modified_files, RepoFile::TYPE_MODIFIED); | ||||||
|  |  | ||||||
|  | 	if(commit_files.size() != all_modified_files.size()) | ||||||
|  | 		files = commit_files; | ||||||
|  |  | ||||||
|  | 	bridge.commitFiles(files, msg); | ||||||
|  | #endif | ||||||
|  |  | ||||||
| 	refresh(); | 	refresh(); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -122,7 +122,7 @@ class MainWindow : public QMainWindow | |||||||
| public: | public: | ||||||
| 	explicit MainWindow(Settings &_settings, QWidget *parent = 0, QString *workspacePath = 0); | 	explicit MainWindow(Settings &_settings, QWidget *parent = 0, QString *workspacePath = 0); | ||||||
| 	~MainWindow(); | 	~MainWindow(); | ||||||
| 	bool diffFile(QString repoFile); | 	bool diffFile(const QString& repoFile); | ||||||
| 	void fullRefresh(); | 	void fullRefresh(); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user