2010-01-14 142 views
1

我有一個項目誰在顛覆結構變爲如下,自動創建顛覆修訂文件

branch 
tags 
trunk 
-- Library 
---- Library Code 
-- Website 
---- Website Code 

庫文件夾包含了大部分項目的代碼,是一個類庫。網站文件夾是一個使用該庫的網站項目。該網站是部署到現場的內容。

我想在網站目錄的根目錄下自動創建一個文件,該文件存儲中繼目錄的最新版本號。這是可能的,如果是的話,我會怎麼做呢?

Subversion服務器是在Windows上使用TortoiseSVN使用的VisualSVN客戶端的VisualSVN。

回答

1

好,包括版本號的通常的方法是把

$Revision$ 

某處成大幹快上承諾擴大了源文件,提供的財產svn:keywords屬性包含Revision

這隻會給你的版本號時文件最後一次提交的,雖然不是當前HEAD版本號。

在過去的項目中,我用一個小腳本調用命令行顛覆程序提取當前版本號。您可以撥打svn info並獲取各種信息,包括工作副本的修訂號。當你在該目錄或它的某個父和文件時,他們實際上是更新,所以它可能不是完全準確執行更新這被更新的目錄。然而,在那個時候,就足以讓我,我永遠只能更新頂層文件夾嗎:

>svn info trunk | findstr /r /c:"^Revision" 
Revision: 14466 
0

看一看在svn info命令。在項目中將其作爲前期/後期構建事件運行會爲您提供所需的信息(以及一些其他信息)。然後您需要將修訂號碼寫入文件。 (如果你這樣做,一定要SVN忽略此文件,否則將進入文件改變,你檢查它,它,該文件改變等無限循環......

0

有一個命令行工具稱爲svnversion,可用於生成您需要的值。但是,您仍然需要手動執行它。而且還有另外一個問題:

  1. 如果你希望將結果保存到存儲庫中,你必須執行它,你提交和存儲的值將始終是過時了。

  2. 如果你想保留的結果未版本控制,你就必須在提交後執行。但它不會被導出。

所以這個問題沒有簡單的答案。建議:

  1. 有一個version.txt文件或任何與$Revision$ keyword
  2. pre-commit hook script排斥如果version.txt尚未修改
  3. 可選的承諾,寫TortoiseSVN client-side hook script自動修改之前提交的文件。
3

由於您使用的是TortoiseSVN,因此我建議使用SubWCRev代替svnversion執行此任務。