2010-11-08 70 views
1

我需要做下面的,我只能想到一個SVN掛鉤的解決方案,但修改鉤交易的交易被認爲是壞:替代SVN鉤子,修改

我們有生產庫和一個測試庫。我想確保當有人向生產存儲庫提交時,他們肯定會這樣做,並且不是錯誤地將其用於測試存儲庫的東西。因此,如果提交者沒有使用「PRODUCTION」行來啓動日誌消息,那麼我預先提交了一個拒絕提交到生產回購的鉤子,然後將該線剝離出來,以便保留其餘的日誌消息。

這種情況是否證明使用掛鉤來修改事務的日誌消息? 如果不是,這會導致什麼麻煩? 有人可以提出一個更好的選擇嗎?

回答

0

如果用戶沒有遵守標準,那麼您可以絕對拒絕預先提交期間的提交。

此外,您可以在預提交期間修改NON-VERSIONED屬性。非版本化屬性的例子是... svn:log,你想要修改。我相信規則是,如果它是一個修訂版本屬性,它是非版本化的,但是如果它是一個文件/目錄屬性,它是版本化的。

版本屬性是類似svn:log,svn:author等的東西 - 通常應用於版本庫根目錄的版本。

有很多示例pre-commit鉤子腳本在那裏修改svn:日誌在提交。一個簡單的例子是FreeBSD的log-police.py,在支持核心FreeBSD操作系統的repo中用於生產。

1

您可以在post-commit鉤子的修改時的日誌信息編輯版本屬性。這似乎比在交易完成之前修改交易清晰。

+0

我需要檢查提交之前的關鍵詞,以便我可以拒絕提交,如果單詞丟失。所以在提交到另一個鉤子之後推遲關鍵字的剝離沒有意義。我可以在那裏做。 – Paralife 2010-11-09 18:41:58

+0

是的,但通常認爲在預*事件期間更改事務通常被認爲是不正確的做法,您還需要在預先提交事件 – 2010-11-10 13:32:00

+0

中修改它的替代方案。我會把它:) – Paralife 2010-12-05 13:00:40

0

我也在尋找修改svn:log的預提交鉤子的例子,因爲它明確地說你可以在pre-commit.tmpl中這樣做。我的BASH pre-commit script for Subversion調用Python腳本以便通過將JIRA問題密鑰擴展到JIRA問題摘要來設置日誌消息。即使在撰寫本文時,我也發現沒有太多例子,而且我也發現大多數人認爲這是一個糟糕的主意,因爲他們混淆了修改非版本化的屬性並修改了事務的適當性。

我發現實際上修改svn的唯一方法是:登錄預先提交的鉤子,就是使用Python綁定到svn API,就像他們在FreeBSD項目中使用「log police」腳本一樣。 James Tauber解釋了這一點(儘管帖子的日期是因爲它指的是svn 1.3) - 谷歌它,因爲我不能在這個答案中發佈更多的鏈接。

除了Subversion本身附帶的基於python-subversion SWIG的包裝器(例如。SubvertPy)之外,知道除了Subversion還有幾種不同的Python綁定是很重要的。 The PySVN project包含一個'transaction'接口,它可以讓你修改svn:log在預先提交的鉤子中。它實際上有點文檔化,而不是標準的python-subversion綁定。

+0

我的觀點關於多個Python綁定到Subversion的討論[這裏](http://stackoverflow.com/questions/10582469/python-subversion-wrapper-library) – 2014-09-19 15:49:42