svn几点备忘

branch 和 merge

  1. branch到trunk see this:

    也許過了一段時間,原本的 /calc/trunk 開發主線可能已經有其他團隊成員陸續修正了一些 Bugs,但這時你的分支 /calc/branches/my-calc-branch 就可以直接套用 開發主線 ( /calc/trunk ) 的更新,除了避免重複的工作外 (重複除錯),也可以避免版本的衝突發生,因為兩個人改同一個已知的 Bug 可能會因為用不同方法除錯或命名的方式不一致而發生衝突。經常將 開發主線 ( /calc/trunk ) 的變更透過 svn merge 合併至 分支線路 ( /calc/branches/my-calc-branch ) 是一個非常好的習慣,這樣才不會讓你因為脫離 開發主線(trunk) 過久而導致將 分支線路 ( /calc/branches/my-calc-branch ) 合併回 開發主線 ( /calc/trunk ) 時發生許多版本衝突。

  2. trunk到branch see this:

    從 分支線路 ( /calc/branches/my-calc-branch ) 合併回 開發主線 ( /calc/trunk ) 通常選第 2 個,而特別選擇 [Reintegrate a branch] 這個選項是很重要的,因為這有以下好處:

    • 讓 Subversion 能知道 開發主線 ( /calc/trunk ) 是從哪個分支、哪些版本合併進來的
    • 有效節省 Subversion Repository (SVN儲存庫) 的空間,因為不用重複儲存分支的所有變更資訊
    • 可以產生 Revision graph 得知專案開發的分支狀況
  3. 注意一下 see this:

    • branch主要用于新功能的开发
    • 合并发生在本地working copy,只要你不提交就不会影响到repository
    • 合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository
    • branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到branch,合并时选择”Merge a range of revision”
    • branch最后合并回trunk时,merge type选择”Reintegrate a branch”

注意:在TortoiseSVN下, 1.的情况在branch处按右键, 2.的情况下在trunk处按右键. 其他客户端在merge时要看清楚from和to的路径.

注意:若在Retergate a branch时出现: must be ancestrally related to 字样,则说明分支和主干没有祖先关系(分支不是该主干分出来的)。解决办法是在看一下branch的log,看看它是从那个版本分出来的,然后checkout出那个版本,接着进行正常的merge。merge成功后若trunk不是最新的,那么还要将其与trunk进行合并。

忽略文件

在 Eclipse 中点击菜单 window –> Preferences –> Team –> Ignored Resources

在Eclipse的导航视图中,选中尚未加入版本控制的文件或目录,右键 –> Team –> 添加至SVN:ignore

右击鼠标-> 选择 TortoiseSVN -> Setting (设置) -> General (常规设置) -> 在右侧 “Golbal ignore pattern”(全局忽略样式)内填入*.db *.bak -> 确定