2009-09-01 73 views
3

我們有大量程序員在不同的平臺上使用CVS。CVS行結尾

我們必須利用窗戶的TortoiseCVS開發商(使用CVSNT)

我們使用Ubuntu 8.04

我們誰擁有兩盒Ubuntu和Windows開發人員有開發商。

不同平臺上的不同開發人員使用各種不同的編輯器。

而且我們遇到了行結尾的巨大問題。這表現爲文件中行結尾數量的持續增長。

現在據我所知,TortoiseCVS使用cvsNT,它假定存儲庫中的UNIX行結束符。當你檢出它時,將UNIX行結尾轉換爲Windows行尾,當你提交它時,將Windows行結尾轉換回UNIX行結尾。

在Ubuntu中,CVS客戶端不做任何轉換,因爲存儲庫應該是UNIX行尾,而且Linux也使用UNIX行結尾。

這一切都正常工作,只要在windows上使用基於cvsNT的客戶端。沒有人切換他們的操作系統。

不幸的是,Ubuntu和Windows系統的用戶經常切換,並可能在不同的操作系統上籤出,編輯或提交。

因此,他們最終使用具有窗口行結尾的linux CVS客戶端提交文件。

當在窗口上使用cvsNT客戶端檢出此項時,CRLF將轉換爲顯示爲兩行的CRCRLF。這種情況發生的次數越多,文件中出現的新行越多。

有沒有辦法讓Linux上的CVS將任何Windows行結束符轉換爲UNIX行結尾,以防止這種情況發生。這樣CVS服務器將只有UNIX行結束符。

也歡迎任何其他解決方法的建議。

回答

3

一種方法是要求開發團隊執行行結束。

在linux和unix上dos2unix和unix2dos都很好用。 Windows上的cywgin將提供一個實現。

可能您清理的人來看,他們在檢查前行結尾的腳本。

我的主要建議是要麼切換到另一個版本控制系統或關閉魔換行。我從來沒有爲我提供魔術換行轉換,我的開發團隊一直都有標準編碼。它並不完美,但它工作得很好。

您還可以編寫一個簡單的腳本,該腳本將在持續集成環境中運行,以掃描增加換行的更新。然後,您可以拒絕更改或清理問題。

好運, 雅各

+0

我發現的具體CVSNT選項尤其難以發現,所以在這裏它是:http://evscm.org/manual/html/Substitution-modes.html。 – Leo 2014-04-30 21:23:39

3

我已經看到了與CVS搞亂行尾的唯一原因是,如果你從一個操作系統拷貝文件到其他。如果您正在這樣做,那麼您正在手動規避VCS。這當然會遇到麻煩。所以要麼停止這樣做,要麼記得自己清理。

我不知道如何自動檢查或甚至在CVS中修復此問題。你有沒有考慮切換到SVN?這是預先提交的鉤子可能是一種方法來做到這一點。 OTOH,一旦你在SVN的土地上,以及它支持快速創建和銷燬私人分支,你可能永遠不會繞過VCS:創建一個分支,在一個平臺上檢查你在分支上的變化,在另一個平臺上平臺切換到該分支,並繼續在那裏工作。重複操作直到完成,將分支合併到主幹中,然後刪除它。沒有從VCS背後的文件從一臺機器偷窺到另一臺機器。有一件事不用擔心。

+0

也許考慮切換到混帳?現在還有一個TortoiseGit。 – 2009-09-02 15:30:07

+0

我不知道git。事實上,我已經從CVS切換到SVN了 - 幾次。幾乎沒有什麼區別,除非一切都開始幾乎按照它應有的方式工作。我想git的切換有點多了,呃,_different_? – sbi 2009-09-02 22:10:51

0

您可以使用常規命令選項「--lf」強制unix行結束。

例如: CVS --lf了