簡體   English   中英

程序員多久會提交一次SVN?

[英]How often should a programmer commit to SVN?

一般規則是什么? 你什么時候犯的?

盡早並經常提交。 它最大限度地減少了在團隊中工作時的沖突解決步驟。 但是不要做任何破壞你的構建的東西。 理想情況下,持續集成會在構建中斷時通知團隊。

每當我完成一件“工作”時我都會嘗試 - 只要代碼編譯,當然。

這篇關於最佳實踐的老帖子已經涵蓋(並且已經很好地介紹)。

SVN最佳實踐 - 在團隊中工作

我建議查看這篇文章,因為它涵蓋了許多好的想法,而不僅僅是提交的頻率。

如果在主干上工作,每當我達到一個不會影響我的隊友的里程碑時,我都會承諾。 在私人分支機構工作時,每當我達到一個里程碑時我都會承諾,我不想失去(我不在乎它是否構建)。 對於個人項目,我使用mercurial並不斷提交。 這一切都取決於對你和你的團隊有用的東西。

使用測試驅動開發時,每次我編寫一個新的單元測試並讓它通過時我都會檢查。

  • 寫測試
  • 確保測試失敗(否則測試無效或不需要)
  • 為此測試編寫新代碼
  • 確認所有自動化測試都通過
  • 報到
  • 重構你的工作,以便你引入的任何重復不再存在
  • 確認所有自動測試仍然通過
  • 報到
  • 轉到第一步。

這取決於具體情況。

  • 如果您在自己的分支機構內工作或使用git,請開火
  • 如果存在自動構建過程或持續集成,您將需要提交細粒度的改進
  • 如果您在分支機構中與其他人同時工作,那么當您進行實質性的細化改進時,您將希望提交,但更多的是“里程碑”。

一般來說,當我在自己的分支機構工作時,我遵循2條准則

  • 如果某事“完整”則提交。 這通常是松散使用的 - 它可以是一個函數,一個類,一個頁面,一個足夠完整的東西,它可以獨立存在
  • 承諾,如果這是“這有效,但它是丑陋的”情況。 當我回去並將我丑陋的修復修改為更優雅的東西時,承諾在這里起到后備作用。 更糟糕的是,我回到工作解決方案,無論多么丑陋。

每當我完成一個工作單元時,我都會提交:修復錯誤,添加功能,提高效率等等。 但我盡量避免長時間的沉默。 Do not Go Dark中的建議值得一讀。

當您擁有不想丟失的代碼時提交。 這並不意味着你承諾中繼,如果你是在一個團隊中發展,你應該避免為他人破壞事情。 如果您的編輯器銷毀文件,您想要返工多少代碼? 一兩個小時?

svn需要提交到遠程服務器使得很難像你應該那樣經常提交,所以我建議你嘗試使用mercurial或git,以便你可以隨時進行本地提交,然后將這些提交發送到svn(通過git) -svn或hg-svn)如果必須使用集中式svn存儲庫,那么在進行自己的清理之后。

您詢問有多少次提交提交的事實意味着svn的集中性在一定程度上妨礙了您的工作流程。 一旦超越學習曲線,您將會對本地機器存儲庫的好處感到高興。

來自瘦/分布式VCS或以前使用它的程序員將提交小的更改或功能,因為本地提交非常便宜。 然后,一旦需要同步,他們就會推送到中央倉庫。 但是因為使用SVN提交是非常昂貴的,所以使用SVN(通常)每天提交的程序員有時候變更集可能在一個非常大的塊中,並且提交可能需要與功能相關聯。 這是不好的習慣。

所以我嘗試將DVCS使用的最佳實踐帶入SVN。 因此我會通過功能提交SVN,這樣一旦更改出現問題,我就會更容易回滾。

如果我需要添加新功能或修復錯誤,我通常會做的是在我需要的地方創建一個分支,在那里完成我的工作,檢查代碼並將其合並回來。你甚至可以分解你的每個用戶的分支文件夾(如果你有很多用戶可能沒有意義),每個開發人員都會保留他們的更改。

一般規則:

  • 在做了有意義的原子變化之后。

原子更改:是一個“邏輯單元”更改,您可以在提交的注釋中輕松編寫它。

有道理:它包括安全更新 - 編譯而不是破壞功能 - 這是你在評論中不怕說的邏輯變化。

我什么時候提交:當我按照一般規則進行一些更改時,我會嘗試更頻繁地進行更改。

可以在這里找到一些更好的做法: http//ducquoc.wordpress.com/2011/06/09/svn-best-practices/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM