2011-08-23 48 views
1

是否可以預測版本號之前提交?預測版本號之前提交

這將是有益的。我想在changelog中編寫修訂號,並將它與它提供的更改一起提交。

我知道我犯達到回購前的數量可以改變,但它仍然會是不錯的知道。

我使用的第一個格式化

更多信息寫我以純文本更新日誌:每一個提交信息中包含的問題ID號,這也出現在更新日誌的標題。

請堅持問題
我在問這是否可能以及如何,如果這是有道理的或其他什麼。




爲什麼我需要這個?我需要這些信息,部署應用程序的人員會知道這些更改在哪些修訂中出現,因此他可能會相應地更新生產服務器。他無論如何都會讀取更改日誌,因爲它包含有關數據庫和其他重要內容更改的信息。如果他不使用blame來查看該條目屬於哪個修訂版本,那會更容易一些。

+0

如果你寫的changelog別人犯? – SLaks

+0

這可能是可能的,但從不100%可靠(例如,其他人可能同時提交)。你需要提供更多關於你正在使用什麼來編寫更改日誌的信息,你是哪一個平臺等等。 –

+0

@Pekka,我正在用純文本格式編寫我的更改日誌,使用第一個格式 – seler

回答

2

的要求堅持這樣一個問題:沒有,這是不可能的 - 不可靠的,反正。

這是一個雞與雞蛋的問題:只有在提交成功時纔會分配修訂號,因此您不能將其包含在提交本身中。

你可以繼續,「好的,我們在修訂12345,所以下一次修訂是12346」,但是當你猜測(即使它需要你幾毫秒),我已經成功地進行了修改,你猜錯了。不要以惡意爲目的,介意你 - 我沒有任何機制知道你即將提交。

+0

最後答覆。根據@Piskvor的說法,唯一的選擇是在下一次提交時將修訂版本附加到changelog。 – seler

+0

@seler:但是這會讓你每次提交兩次修訂(最好):實際的文件,以及沒有內容的修訂版本與以前的修訂版本號,對不對?更不用提一個觸發另一個觸發的危險,並觸發另一個觸發 - 激光模式的教科書示例(http://www.catb.org/jargon/html/S/software-laser.html)。 – Piskvor

+0

是的,那會讓我有兩個提交代碼的代碼,一個更新到更新日誌。這正是我想要避免和發佈我的問題的原因。 – seler

0

如果你需要跟蹤問題或某些特徵跟蹤的版本號,那麼您可以使用post-commit鉤子來發送電子郵件到您的問題/功能跟蹤服務器與整個提交日誌信息。然後,問題跟蹤器可以解析此電子郵件並將內容添加到相應問題中。關鍵是你提交的問題編號。換句話說,您需要以特定格式在提交日誌消息中指定問題編號,以便問題跟蹤器在解析電子郵件時查找它。

0

你可以做一個pre-commit鉤子,你寫的更新日誌,並使用一個特殊的標記來表示svn的可以相應地修改變更日誌的區域。

更多信息herehere

+1

在鉤子腳本中不要修改事件導致客戶端/服務器同步的原始來源。 – khmarbaise

+0

也許強制更新後提交獲取實際的文件?這可以通過post commit鉤子來完成嗎? –

+0

不,導致鉤子腳本在服務器上運行,而工作副本在客戶端上,所以沒有選擇。 – khmarbaise

0

我會建議在更改寫日誌,您正在解決的問題數量和問題跟蹤系統會自動掃描svn庫,使問題和版本號之間的關聯(很多問題跟蹤都是這樣的,JIRA,Redmine,Trac等)。 此外使用版本號是不可靠的,因爲在寫更改日誌的過程中,其他人可以在之前(已經提到)進行提交。

+0

問題編號已在更新日誌中。請回答我的問題,如果這是可能的,否則不要發佈無關的答案。 – seler

5

有點哈克,但這應該在Linux上運行:如果您在提示符下

svn up 

鍵入答案的最後一行將

At revision 42. 

Updated to revision 42. 

其中42是整個svn服務器上最後一次提交的修訂版本號。所以未來承諾將是一個+ 1,你可以得到它,用這個命令:

svn up | sed -ne 's/revision //p' | sed -e 's/[^0-9]*//g' 

如果你足夠快,你可以希望沒有人會在你面前犯。如果你有SVN服務器的的工作副本,你可以將其鎖定,以防止任何承諾,並在年底解鎖:

svn lock rootdir 
svn unlock rootdir 
+2

您的第一個stackoverflow答案?歡迎!非常好的是,你正確地設計了答案格式,它顯示了對細節的關注。 –

1

這種方法避免了工作副本回購互動。

svn info https://myserver/svn/my-project-root-dir 

這將顯示類似:

在頂部root目錄版本庫的直接查詢與信息命令SVN服務器

Path: my-project-root-dir 
URL: https://myserver/svn/my-project-root-dir 
Relative URL: ^/ 
Repository Root: https://myserver/svn/my-project-root-dir 
Repository UUID: 7f430767-c695-4424-a1c3-24180d67394b 
Revision: 2255 
Node Kind: directory 
Last Changed Author: joe 
Last Changed Rev: 2255 
Last Changed Date: 2016-11-13 20:22:33 +0100 

讓你的「下一個」 SVN版本將是2256

比方說:

$ svn info https://myserver/svn/my-project-root-dir | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }' 
2255 

或得到一個自動增量(慶典):

$ R=$(svn info https://myserver/svn/my-project-root-dir | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }'); let R+=1; echo $R 
2256