2010-01-13 18 views
4

我開始在「」中擊敗檢入源控制之前的過程?

問題不在於我在編寫狡猾的代碼,而是在將我的修復程序返回到源代碼管理中時,這一切都出錯了。

我經常做這樣愚蠢的事情:

  • 忘記添加新文件
  • 代碼意外檢查半固定的錯誤與其他錯誤以及解決
  • 忘記保存文件VS在檢查他們之前

我需要開發一些習慣/工具來制止這一點。

你經常做些什麼來確保你簽入的代碼是正確的,是什麼需要去?

編輯

我忘了提,事情可能會在這個地方非常混亂。我經常會在同一個代碼庫中同時處理兩三件事情。當我登記入住時,我只想確認其中一件事情。

+1

你使用什麼源碼控制系統?可能有工具可以幫助自動化這些容易出錯的任務。 – 2010-01-13 14:57:45

+1

同樣,有持續集成服務器允許您執行預先測試的提交 - 特別是TeamCity的思路...... – 2010-01-13 14:58:28

+3

如何在提交更改之前將自己的常見錯誤列表清單並檢查每個項目?你似乎完全是在引用人爲錯誤,對這些錯誤的解決往往是「紀律」。 – Lazarus 2010-01-13 14:58:49

回答

7

一些建議:一次在一個問題上

  • 試工作。對代碼庫進行無關的更改很容易,然後最終被認爲是一個糟糕的日誌消息的大塊。 Git在這裏非常出色,因爲您可以輕鬆地移動切換分支,並存儲並挑選更改。
  • 在提交之前運行狀態命令,查看您觸摸了哪些文件,以及是否創建了需要添加到版本控制中的新文件。
  • 運行diff命令查看您實際已更改的內容。通常情況下,你會發現你留下了一些調試日誌記錄,應該刪除或進行一些不必要的更改,只是將差異搞亂。儘量讓您的差異儘可能小而乾淨。
  • 確保你的工作拷貝與變化建立在其檢查之前
  • 更新,確保你的工作副本與它的其他民族的變化建立
  • 運行什麼都冒煙測試套件則可能必須確保您的更改正常工作
  • 進行小而頻繁的提交。在破解提交很小的時候,弄清楚什麼破壞了構建要容易得多。

團隊可以做的其他事情是建立一個像David M建議的連續集成服務器,以便儘可能快地自動發現破壞的構建。

4

我通常總是先做一個Get Latest,然後構建。如果編譯好,我檢查我的代碼。

1

在過去,我使用Clear Case中的分支來幫助解決這個問題。我使用的過程如下。我從來沒有使用SorceDepot,所以我不知道如何調整它以適應它。

  1. 創建的bug分支修復
  2. 代碼分支上的所有更改
  3. 代碼審查
  4. 合併到穩定的分支在不同的視圖(不同的觀點是重要的)
  5. 前的檢查在:編譯,測試和運行
  6. 入住代碼stable分支

通過創建分支,然後將更改合併到其他視圖(我使用合併管理器進行合併),任何未包含或立即檢入的文件都會導致問題。這樣,所有的東西都會被測試,因爲它會在穩定的分支上籤入。

1

避免你的問題最好的辦法是使用大多數SCM中提供的鉤子(他們肯定在SVN和Mercurial中,我相信他們必須在其他高級SCM中)。安裝單元測試掛鉤,並使其運行每有人在檢查代碼的時候 - 也就是之前在檢查這種方式,您將實現兩件事情:在SCM回購

  • 代碼總是通過測試,
  • 你不會犯最簡單的錯誤,因爲如果你有體面的測試套件,它們應該很容易檢測到。
2

首先,使用多個工作副本(a.k.a沙箱) - 每個問題一個。因此,如果您在一段時間內一直在處理一些複雜的功能,並且您需要在同一個項目上處理一個快速錯誤修復,請檢查一個新的乾淨的工作副本並在那裏進行錯誤修復。每個問題都有獨立的工作副本,對於從工作副本到存儲庫的哪些更改不會產生混淆。

二,提交更改之前,始終執行以下三個步驟:

  1. 球泡的軟件。
  2. 運行煙霧測試(啓動和運行時是否沒有崩潰)。
  3. 通過將更改與基準進行比較來檢查要檢查的更改。

這些應該在任何合併操作後重復(例如SVN更新後)。

2

這是我一直在做的事情。過去我使用ClearCase和CVS進行源代碼控制,最近我一直使用Subversion和Visual Studio 2008作爲我的IDE。

  1. 使我的代碼更改並建立在本地計算機上。

  2. 確保他們這樣做,事實上,修復了問題。

  3. 運行在本地機器上的更新SVN,並重復步驟1和2。

  4. 運行通過自動化單元測試,以驗證它們通過。

  5. 如果有自動化煙霧測試可用,它會自動測試大量系統功能,請運行它。驗證結果是否正確。

  6. 然後轉到生成機器並運行構建腳本。

如果項目的配置發生了變化,這肯定會破壞構建。在構建機器上執行SVN更新,無論構建腳本是否執行該操作。打開生成機器的IDE副本,並完成重建。這將向您顯示構建框是否存在您已在機器上處理但未在構建框中處理過的任何問題。

如果您可以跟蹤所有您正在處理的問題,那麼爲每個問題保留獨立分支機構的建議也非常好。

1

我喜歡有Windows資源管理器的龜插件。文件圖標都帶有已提交,已修改或未添加的圖標,因此可以非常輕鬆地查看文件的狀態。我還啓用了修改後的元數據,以便在列表(詳細信息)視圖中對已更改的文件進行排序,其中他們泡到頂端,以便我可以看到他們。

我打賭你的SCM有一個Tortoise *插件,我看到一個用於Mercurial和SVN(和CVS,呃)。我真的希望Mac OS X的Finder能接受像Tortoise這樣的插件,它比大多數時候需要打開專門的應用程序容易得多。

2

在我的工作場所,這個安全網是同行評審。也就是說,讓他人在他們的機器上構建,運行和複製解決方案。

我不能推薦這個。它吸收了很多遺漏,可能存在的問題以及其他意外的垃圾,使其成爲這一過程的重要組成部分。更不用說,在將知識應用於其他人之前,您必須將自己的工作置於別人面前,這意味着您要提高自己的質量標準。

1

讓別人在簽入代碼之前通過「每次」更改。

相關問題