2008-11-03 130 views
1

我工作的公司寫了很多小小的Perl和Bash腳本來將數據按摩到可用於我們軟件的東西。這些腳本與任何代碼一樣可以更改。由於文件版本化而不是版本庫版本化,我向他們提供了CVS。無論如何,我正在考慮使用部署工具來將腳本從開發到生產。生產服務器將擁有它自己的簡單版本控制系統,因爲如果其中一個腳本的md5總和與數據庫中的某個腳本不匹配,它將不會運行該腳本並通過電子郵件發送相應的各方。確保部署文件的正確版本的最佳方法?

我想迫使程序員部署最新的CVS版本的腳本。如果它不是最新的,它應該消息告訴他們必須先檢查他們的版本。我意識到可能會出現需要部署舊文件的情況。那些將是例外情況,可以像這樣處理。

什麼是最好做到這一點?它和做'cvs diff'一樣簡單嗎?

回答

1

如果你打算寫某種分發腳本的應該是比較簡單的

1)該腳本應該在你的CVS倉庫

2)我建議從makefile調用腳本致力於(或任何編譯系統使用) 像這樣

make dist 

和DIST規則將調用你的腳本。
3)腳本將執行

cvs up -An 

和分析輸出通過重定向輸出到grep例如尋找M或C或A或R狀態 。

grep -c ^[MCAR] 

如果計數> 0,您遇到了問題。

4)如果發現上述一個失敗的構建腳本

5)如果沒有創建您使用

部署舊版本的tar或分配的任何其他形式可以使一個-A作爲默認情況下將參數設置爲-A並且例如通過shell變量將其重寫爲例如-r tag-3.14.4。

+0

使用'^ [MARC]'來防止文件名中的大寫字母導致誤報... – dmckee 2008-11-03 21:05:08

+0

您正確糾正。謝謝 – Ilya 2008-11-03 21:10:16

0

我曾參與部署過的內部工具。它是爲企業設計的(並且符合SOX法規),因此它依靠批准來部署代碼。

因此,我們部署了開發人員在請求中指定的代碼版本,而不是最新版本。原因是開發人員可能需要進行更改,進行測試,同時還會發生其他更改。這些更新的更改沒有經歷測試(QA)階段,但開發人員的原始版本已經完成,因此我們將部署該版本。

所有這一切,我會設計它的方式,可以指定一個版本號,如果沒有版本號,然後推最新的。

相關問題