我讀過太多的文章談論顛覆關鍵字和許多其他細節,如錨點和錨點標誌,但他們都沒有談論c + +。如何閱讀和通過我的c + +代碼svn版本
我正在使用QT創建器,我希望C++讀取svn版本並將其作爲值或字符串(或任何數據類型)傳遞給我的代碼。
那麼,我該怎麼做呢?
我讀過太多的文章談論顛覆關鍵字和許多其他細節,如錨點和錨點標誌,但他們都沒有談論c + +。如何閱讀和通過我的c + +代碼svn版本
我正在使用QT創建器,我希望C++讀取svn版本並將其作爲值或字符串(或任何數據類型)傳遞給我的代碼。
那麼,我該怎麼做呢?
謝謝大家的幫助。其實我找到了另一種方式。請參考此問題:
從SVNBook文本可能是與此有關:
新用戶往往是由$ $修訂關鍵字是如何工作的混淆。由於 存儲庫具有單一的全球增加的修訂版本號,因此許多人認爲此數字反映在$ Rev $ 關鍵字的值中。但$ Rev $展開後顯示文件最後修訂版 已更改,而不是最新修訂版。 瞭解這一點可以消除混淆,但通常情況下 仍然存在 - 如果沒有Subversion關鍵字的支持, 會自動將全局修訂號碼導入到您的文件中?
要做到這一點,您需要外部處理。 Subversion附帶一個叫做svnversion的工具 ,它是專爲此目的而設計的。它抓取您的工作副本 並生成它找到的修訂的輸出。 您可以使用此程序以及一些附加工具將 版本信息嵌入到您的文件中。有關 svnversion的更多信息,請參閱「svnversion」一節。
在我的項目,我們結束了不使用svnversion
,主要是因爲我們的source tree is huge和該命令似乎採取過多的時間量。但是,我們的確得到了類似的東西,可以將修訂號碼導入我們的軟件。該configure
腳本執行以下命令
svn info . > svn_revision
這是假設的命令是從哪兒是從SVN庫中檢出了一個目錄執行。爲了解析這些數據,我有裏grep各種串到常量
SVN_REV = $(shell cat svn_revision | grep "Last Changed Rev" | cut -f4 -d\)
這是通過一個模板文件我稱之爲version.cc.template
喂Makefile中,有一個Makefile規則,把它變成一個.cc
文件
version.cc: version.cc.template /svn_revision
sed -e "s/REVISION/$(SVN_REV)/" version.cc.template > [email protected]
所以我結束了這樣的事情
version.h中
namespace project {
extern const char* Revision;
extern const unsigned int SvnRevision;
}
version.cc
namespace project {
const char* Revision = "1234";
const unsigned int SvnRevision = 1234;
}
可能無法在您情況下所需的文件version.cc
,常數可以在報頭中被定義爲好。
How to get the output of system() command qt c++?
像接受的答案說,你可以運行通過系統終端使用QProcess中的命令,等待它完成,然後得到命令的文本。
感謝您的回覆。其實我現在可以將'svn --version' commnad寫入一個文件。然而,我不需要這個命令,我需要'svn info'命令,只將字符串「exported」寫入到.txt文件中。現在的問題是,我無法說明'svn info'命令可以執行的工作副本 – 2013-04-05 13:46:47
http://qt-project.org/doc/qt-4.8/qprocess.html#setWorkingDirectory使用此函數來設置您要運行QProcess命令的目錄。那麼你的'svn info'應該可以工作。 – phyatt 2013-04-05 16:31:01
你的意思是char * my_rev = $ Revision $; – user1810087 2013-04-04 15:52:54
您可以將svn prop添加到文件中。然後讓ID,作者......在每個文件的頂部。 svn會正確更新它們。然後用C++打開文件並閱讀。 – 2013-04-04 15:53:04
你需要和svn一起工作,還是隻是想在你的程序幫助中向你展示svn版本? – Amartel 2013-04-04 15:54:47