㈠ svn如何解決分支沖突
1、 如何產生沖突
當開發人員A和開發人員B從版本庫同時檢出文檔1.txt,而A和B同時修改了1.txt的同一地方,後提交的一方會在拷貝副本中產生沖突。
兩個工作拷貝,A拷貝中文件1.txt內容為
dfqerq
123dfwre
B拷貝中文件1.txt內容為
dfqerq
123erwrq
在B版本提交之前版本庫上的1.txt(base版本)內容為
dfqerq
B拷貝先提交版本到版本庫中,以至於最新版本內容變為
dfqerq
123erwrq
此時A版本也提交則會產生沖突,無法提交,需要先svn
update,此時會在A拷貝中產生三個臨時文件1.txt.rNew\1.txt.rOld\1.txt.mine,其中1.txt.rNew是最新版
本,1.txt.rOld是base版本,1.txt.mine是A作者修改後的版本,在此例中內容為
dfqerq
123dfwre
而update之後A拷貝中的1.txt內容為
<<<<<<< .mine
dfqerq
123dfwre=======
dfqerq
123erwrq>>>>>>> .r18
其中<<<<<<< .mine與=======之間表示A修改後的內容,=======與>>>>>>> .r18之間是版本伺服器上的版本
2、解決沖突
第一種,利用update的選項進行沖突解決,也就是說不管當前拷貝副本是否是最新版本,都使用—accept參數作為沖突處理方式
–accept ARG : specify automatic conflict resolution action
(『postpone』, 『base』, 『mine-conflict』,
『theirs-conflict』, 『mine-full』, 『theirs-full』,
『edit』, 『launch』)
(p) postpone – mark the conflict to be resolved later //讓文件在更新完成之後保持沖突狀態。
(df) diff-full – show all changes made to merged file //使用標准區別格式顯示base修訂版本和沖突文件本身的區別。
(e) edit – change merged file in an editor //用你喜歡的編輯器打開沖突的文件,編輯器是環境變數EDITOR設置的。
(r) resolved – accept merged version of file //完成文件編輯之後,通知svn你已經解決了文件的沖突,它必須接受當前的內容—從本質上講就是你已經「解決了」沖突。
(mf) mine-full – accept my version of entire file (ignore their change//丟棄新從伺服器接收的變更,並只使用你查看文件的本地修改。
(tf) theirs-full – accept their version of entire file (lose my changes)//丟棄你對查看文件的本地修改,只使用從伺服器新接收的變更。
(l) launch – launch external tool to resolve conflict//啟動一個外置程序來執行沖突解決,這需要一些預先的准備。
(h) help – show this list //顯示所有在沖突解決時可能使用的命令。
第二種,在update時並不處理沖突,利用svn resolve解決沖突
1、利用svn resolve –accept base選擇base版本,即1.txt.rOld作為最後提交的版本
–accept ARG : specify automatic conflict resolution source
(『base』, 『working』, 『mine-conflict』,
『theirs-conflict』, 『mine-full』, 『theirs-full』)
2、手工修改1.txt文件,然後將當前拷貝即1.txt作為最後提交的版本
svn resolve –accept working 1.txt
3、svn resolve –accept theirs-full 1.txt 使用1.txt.rNew作為最後提交的版本
4、svn resolve –accept mine-full 1.txt 使用1.txt.mine作為最後提交的版本
5、svn resolve –accept mine-conflict 1.txt 使用1.txt.mine的沖突部分作為最後提交的版本
5、svn resolve –accept theirs-conflict 1.txt 使用1.txt.rNew的沖突部分作為最後提交的版本
第三種,使用svn revert取消變更
(以上文章來源:http://blog.sina.com.cn/s/blog_65fd4c1e0100h2cg.html)
-----
前兩天在解決沖突時用到了svn resolve這個命令,找到這篇文章主要是因為他對–accept參數的說明比較全
比官方的文檔更詳細。
svn文件沖突,樹沖突詳解
解決沖突
偶爾,當你從版本庫更新、合並文件時,或者切換工作副本至一個不同的 URL 時你會遇到沖突。有兩種沖突:
文件沖突
當兩名(或更多)開發人員修改了同一個文件中相鄰或相同的行時就會發生文件沖突。
樹沖突
當一名開發人員移動、重命名、刪除一個文件或文件夾,而另一名開發人員也對它們進行了移動、重命名、刪除或者僅僅是修改時就會發生樹沖突。
文件沖突
當兩名或更多開發人員修改了同一個文件中相鄰或相同的行時就會發生文件沖突。由於 Subversion 不知道你的項目的具體情況,它把解決沖突的工作留給了開發人員。一旦出現沖突,你就應該打開有問題的文件,查找以字元串<<<<<<<開頭的行。有沖突的區域用如下的方式標記:
<<<<<<< 文件名
你的修改
=======
合並自版本庫中的代碼
>>>>>>> 版本
對於每個沖突的文件 Subversion 在你的目錄下放置了三個文件:
文件名.ext.mine
這是你的文件,在你更新你的工作副本之前存在於你的的工作副本中——也就是說,沒有沖突標志。這個文件除了你的最新修改外沒有別的東西。
文件名.ext.r舊版本
這是在你更新你的工作副本之前的基礎版本(BASE revision)文件。也就是說,它是在你做最後修改之前所檢出的文件。
文件名.ext.r新版本
這個文件是當你更新你的工作副本時,你的 Subversion 客戶端從伺服器接收到的。這個文件對應於版本庫中的最新版本。
你可以通過TortoiseSVN → 編輯沖突運行外部合並工具/沖突編輯器,或者你可以使用任何別的編輯器手動解決沖突。你需要沖定哪些代碼是需要的,做一些必要的修改然後保存。
然後,執行命令TortoiseSVN → 已解決並提交人的修改到版本庫。需要注意的是已解決命令並不是真正的解決了沖突,它只是刪除了filename.ext.mine和filename.ext.r*兩個文件,允許你提交修改。
如果你的二進制文件有沖突,Subversion不會試圖合並文件。本地文件保持不變(完全是你最後修改時的樣子),但你會看到filename.ext.r*文件。如果你要撤消你的修改,保留版本庫中的版本,請使用還原(Revert)命令。如果你要保持你的版本覆蓋版本庫中的版本,使用已解決命令,然後提交你的版本。
你可以右擊父文件夾,選擇TortoiseSVN → 已解決...,使用「已解決」命令來解決多個文件。這個操作會出現一個對話框,列出文件夾下所有有沖突的文件,你可以選擇將哪些標記成已解決。
樹沖突
當一名開發人員移動、重命名、刪除一個文件或文件夾,而另一名開發人員也對它們進行了移動、重命名、刪除或者僅僅是修改時就會發生樹沖突。有很多種不同的情形可以導致樹沖突,而且不同的情形需要不同的步驟來解決沖突。
當一個文件通過 Subversion 在本機刪除後,文件也從本機文件系統中刪除。因此即使它是樹沖突的一部分,卻既不能顯示沖突的疊加圖標也不能通過右鍵單擊來解決沖突。使用檢查修改對話框來獲得編輯沖突選項。
TortoiseSVN 能夠協助找到合並更改的正確位置,但是需要作一些額外的工作來整理沖突。請牢記: 當進行一次更新操作後,工作副本的基礎文件將會包括每一個項目在執行更新操作時版本庫中的版本。如果你在進行更新後再撤銷更改,工作副本將返回到版本庫的 狀態,而不是你開始進行更改前的狀態。
本地刪除,當更新時有更改進入
開發人員 A 修改 Foo.c 並將其提交至版本庫中
開發人員 B 同時在他的工作副本中將文件 Foo.c 改名為 Bar.c,或者僅僅是刪除了 Foo.c 或它的父文件夾。
更新開發人員 B 的工作副本會導致樹沖突:
在工作副本中,Foo.c 被刪除了,但是被標記為樹沖突。
如果沖突是由於更改文件名引起的而不是刪除文件引起的,那麼 Bar.c 被標記為添加,但是其中卻不包括開發人員 A 修改的內容。
開發人員 B 現在必須做出選擇是否保留開發人員 A 的更改。在更改文件名的案例中,他可以將 Foo.c 的更改合並到改名後的文件 Bar.c 中去。對於刪除文件或文件夾的案例中,他可以選擇保留包含開發人員 A 更改內容的項目並放棄刪除操作。或什麼也不做而直接將沖突標記為已解決,那樣他實際上丟棄了開發人員 A 的更改。
如果 TortoiseSVN 能夠找到被改名為 Bar.c 的原始文件,沖突編輯對話框將可以合並更改。這取決於在什麼地方調用更新操作,它也許不能找到原始文件。
本地更改,當更新時有刪除進入
開發人員 A 將文件 Foo.c 改名為 Bar.c 並將其提交至版本庫中。
開發人員 B 在他的工作副本中修改文件 Foo.c。
或者在一個文件夾改名的案例中...
開發人員 A 將父文件夾 FooFolder 改名為 BarFolder 並將其提交至版本庫中。
開發人員 B 在他的工作副本中修改文件 Foo.c。
更新開發人員 B 的工作副本會導致樹沖突。對於一個簡單的文件沖突:
Bar.c 被當作一個正常文件添加到工作副本中。
Foo.c 被標記為添加(包括其歷史記錄)並且產生樹沖突。
對於一個文件夾沖突:
BarFolder 被當作一個正常文件夾添加到工作副本中。
FooFolder 被標記為添加(包括其歷史記錄)並且產生樹沖突。
Foo.c 被標記為已修改。
開發人員 B 現在需要做出決定是否接受開發人員 A 作出的結構改變並且合並她的更改到新結構下適當的文件中,或者直接放棄開發人員 A 的更改並保留本地文件。
要合並她的本機更改到新布局中,開發人員 B 必須先找出沖突的文件 Foo.c 經過改名/移動後在版本庫中的新文件名是什麼。可以使用日誌對話框來完成這個任務。更改必須要手工合並,因為沒有辦法自動的或者簡單的完成此操作。一旦更改移植完畢,沖突的路徑就是多餘的並且可以刪除。在此案例中,使用沖突編輯對話框中的刪除按鈕進行清理並將沖突標記為已解決。
如果開發人員 B 認為 A 的更改是錯誤的,那麼在沖突編輯對話框中她必須選擇保留按鈕。這樣就會標記沖突的文件/文件夾為已解決,但是需要手工刪除開發人員 A 的更改。又是通過日誌對話框幫助追蹤哪些文件移動了。
本地刪除,當更新時有刪除進入
開發人員 A 將文件 Foo.c 改名為 Bar.c 並將其提交至版本庫中。
開發人員 B 將文件 Foo.c 改名為 Bix.c
更新開發人員 B 的工作副本會導致樹沖突:
Bix.c 被標記為添加(包括其歷史記錄)。
Bar.c 被添加到工作副本中,其狀態為『正常』。
Foo.c 被標記為刪除並且產生一個樹沖突。
要解決這個沖突,開發人員 B 必須找出沖突的文件 Foo.c 經過改名/移動後在版本庫中的新文件名是什麼。可以使用日誌對話框來完成這個任務。
然後,開發人員 B 需要決定 Foo.c 的新文件名中的哪一個需要保留 - 開發人員 A 改的那個還是他自己改的那個。
在開發人員 B 手工解決沖突後,使用沖突編輯對話框中的按鈕將樹沖突標記為已解決。
本地缺少,當合並時有更改進入
開發人員 A 在主幹上工作,修改 Foo.c 並將其提交至版本庫中
開發人員 B 在分支上工作,將 Foo.c 改名為 Bar.c 並將其提交至版本庫中
合並開發人員 A 的主幹更改到開發人員 B 的分支工作副本會導致樹沖突:
Bar.c 已經存在於工作副本中,其狀態為『正常』。
Foo.c 被標記為缺少並產生樹沖突。
要解決這個沖突,開發人員 B 要在沖突編輯對話框中標記文件為已解決,這樣就會將其從沖突列表中刪除。她接下來需要決定是否將缺少的文件 Foo.c 從版本庫中復制到工作副本中,是否將開發人員 A 的對 Foo.c 的更改和合並到改名後的 Bar.c 或者是否通過標記沖突為已解決來忽略更改什麼事也不做。
注意,如果你將缺少的文件從版本庫中復制到工作副本中然後再標記為已解決,你復制下來的文件將被再次刪除。你必須先解決沖突。
本地更改,當合並時有刪除進入
開發人員 A 在主幹上工作,將 Foo.c 改名為 Bar.c 並將其提交至版本庫中
開發人員 B 在分支上工作,修改 Foo.c 並將其提交至版本庫中
當文件夾改名時有類似的案例,但是在 Subversion 1.6 中還未被識別...
開發人員 A 在主幹上工作,將父文件夾 FooFolder 改名為 BarFolder 並將其提交至版本庫中。
開發人員 B 在分支上工作,在她的工作副本中修改 Foo.c 。
合並開發人員 A 的主幹更改到開發人員 B 的分支工作副本會導致樹沖突:
Bar.c 被標記為添加。
Foo.c 被標記為修改並產生樹沖突。
開發人員 B 現在需要做出決定是否接受開發人員 A 作出的結構改變並且合並她的更改到新結構下適當的文件中,或者直接放棄開發人員 A 的更改並保留本地文件。
要合並她的本機更改到新布局中,開發人員 B 必須先找出沖突的文件 Foo.c 經過改名/移動後在版本庫中的新文件名是什麼。可以通過適用於合並源碼的日誌對話框來完成這個任務。沖突編輯器僅顯示工作副本的日誌因為它不知道將哪個路 徑的更改合並進來,所以你需要自己找到它。更改必須要手工合並,因為沒有辦法自動的或者簡單的完成此操作。一旦更改移植完畢,沖突的路徑就是多餘的並且可 以刪除。在此案例中,使用沖突編輯對話框中的刪除按鈕進行清理並將沖突標記為已解決。
如果開發人員 B 認為 A 的更改是錯誤的,那麼在沖突編輯對話框中她必須選擇保留按鈕。這樣就會標記沖突的文件/文件夾為已解決,但是需要手工刪除開發人員 A 的更改。又是通過日誌對話框幫助追蹤哪些文件移動了。
本地刪除,當合並時有刪除進入
開發人員 A 在主幹上工作,將 Foo.c 改名為 Bar.c 並將其提交至版本庫中
開發人員 B 工作在分之上,將 Foo.c 改名為 Bix.c 並將其提交至版本庫中
合並開發人員 A 的主幹更改到開發人員 B 的分支工作副本會導致樹沖突:
Bix.c 被標記為正常(未修改)狀態。
Bar.c 被標記為添加(包括其歷史記錄)。
Foo.c 被標記為缺少並且產生樹沖突。
要解決這個沖突,開發人員 B 必須先找出沖突的文件 Foo.c 經過改名/移動後在版本庫中的新文件名是什麼。可以通過適用於合並源碼的日誌對話框來完成這個任務。沖突編輯器僅顯示工作副本的日誌因為它不知道將哪個路徑的更改合並進來,所以你需要自己找到它。
然後,開發人員 B 需要決定 Foo.c 的新文件名中的哪一個需要保留 - 開發人員 A 改的那個還是他自己改的那個。
在開發人員 B 手工解決沖突後,使用沖突編輯對話框中的按鈕將樹沖突標記為已解決。
㈡ 如何在MAC環境下使用svn,以及新手在團隊使用svn注意事項
1、Xcode4中蘋果有自帶的SVN軟體------>Organizer------>Repositories
2、SVN checkout到本地後,刪除本地file,對伺服器有影響嗎?
不會影響伺服器,當你執行「svn update」時會zai再次被自動下載;當刪除後再執行「svn commit」就會在伺服器上也對應刪除。
3、連接伺服器
點擊file-》repositories-》點擊坐下邊的「+」-》然後名字及svn伺服器的地址,還有type選中subversion然後next等等了。
4、Xcode4下,SVN中常用命令
Commit 提交
checkout 將伺服器上下載到本地(我個正在使用的電腦)
update 更新文件
File------->SourceController------->update
圖片中第3個按鈕,是視圖對比按鈕。
5、SVN中用法詳解和注意事項
①提交自己的代碼
SVN更新的原則是要及時更新,及時提交。當完成了一個小功能,能夠通過編譯並且並且自己測試之後,盡量早的提交,這樣也保存了歷史版本,必要時候可以回滾;在開始一天的工作之前,最後update一下項目。
②保持原子提交(不要不經意間修改並提交了別人的文件)
僅提交你修改的部分,最好不要一下子將整個項目提交;
當完成一個功能或文件後,最好提交。我就遇到完成某個功能後,沒有提交,後來又做了更改,結果代碼出現bug,無法恢復到正常時的代碼。
③不要提交自動生成的文件
VisualStudio等開發工具在生成過程中會產生很多自動文件,如。suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動生成,同編譯代碼無關的文件,這些文件在提交的時候不應該簽入,如果不小心簽入了,需要從倉庫中刪除。
④不要提交不能通過編譯的代碼
代碼在提交之前,首先要確認自己能夠在本地編譯。進行SVN提交更新時最好是代碼在提交前已經通過自己的測試。
SVN中常用命令詳解
1、將文件checkout到本地目錄
svn checkout path(path是伺服器上的目錄)
例如:svn checkout svn://192.168.1.1/pro/domain
2、往版本庫中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
3、刪除文件
svn delete path -m 「delete test fle」
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m 「delete testfile」
4、查看日誌
svn log path
5、比較差異
svn diff path(將修改的文件與基礎版本比較)
6、將兩個版本之間的差異合並到當前文件
svn merge -r m:n path
SVN使用方法
更新(update),經常地update沒有壞處,特別是多人項目中。如果每次提交(commit)前不進行更新(update)的到最新的版本的話,svn會提示當前的拷貝過期,需要更新。
提交(commit),一定要寫上這次提交的內容的摘要,便於以後查閱。
將文件checkout到本地目錄
svn checkout path(path是伺服器上的目錄)
svn update命令自動用伺服器上的版本替換本地版本控制的文件
6、Xcode中使用SVN問題以及提交解決沖突問題
Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比較起來功能還差很多。
我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其實也挺好,不過,為了使用SVN功能要單獨開一個耗費資源的Eclipse。
但是,不論使用什麼SVN工具,都會遇到Xcode固有的問題,即project.pbxproj文件的提交沖突問題。
project.pbxproj文件裡麵包含了構建過程所需的所有文件,如果你在項目目錄下增加了新文件,比如沒有通過Xcode,該文件就不在project.pbxproj文件中,就不會生成到app中。同理,如果你從SVN中更新到其他項目成員增加的文件,而沒有更新project.pbxproj文件(或者該成員根本就沒有提交這個文件),則也會出現相同的現象。
如果項目成員提交了新的project.pbxproj文件,你這邊沒有在項目中增加新的文件,直接svn update就可以了。
7、Xcode中更新代碼後項目文件打不開
若選擇更新整個項目經常會出現沖突問題,尤其是project.pbxproj文件。此文件包含了構建過程所需的所有文件,如果在項目目錄下增加了新文件,但沒有通過Xcode,
該文件就不在project.pbxproj文件中,就不會生成到app中。同理,如果從SVN中更新到其他項目成員增加的文件,
而沒有更新project.pbxproj文件(或者該成員根本就沒有提交這個文件),則也會出現相同的現象。這一文件沖突將直接導致項目文件打不開。
解決更新代碼後打不開項目文件方法:
當項目文件如tobacco.xcodeproj打不開時可以右鍵選擇『顯示包內容』,會看到有三個文件,project.pbxproj/user.modelv3/user.pbxuser。
其中project.pbxproj有三個版本,和解決普通svn文件沖突一樣解決沖突即可。
8、SVN 更新 提交 合並 區別
當本地文件沒有改動,伺服器文件改動的時候,更新會從伺服器取文件覆蓋當前文件
當本地文件有改動,伺服器文件沒改動的話,不會更新此文件
當本地文件有改動,伺服器文件有改動的話,如果改動的部分不沖突,就會合並文件到本地,如果有沖突的話,會提示文件沖突,需要自己手動修改以後上傳到伺服器。
最後一個講解合並:
伺服器和本地的同一個文件(所謂同一個文件應該就是SVN相對路徑相同,文件名相同的文件,這個由SVN留在本地的信息決定)已經修改,且修改的部分不重合,不重疊
當滿足上面的條件的時候再更新,SVN就會自動合並
SVN的奧妙之處就在於別人提交了修改後的文件,你再提交你的話,他是不允許你提交滴……
>>>>
<<<
裡面標記的是沖突的區域,把沖突區域刪除掉為什麼還不能提交
解決辦法1:
刪掉的話還是沒有解決沖突,文件後面還會有幾個文件名相同,但是後綴不同的文件
如果你不知道用SVN解決沖突的話,最簡單的辦法是這樣的
把這個文件改名字,然後在文件所在目錄更新,這樣就會把伺服器文件下下來,然後把自己修改的部分添加到更新的文件裡面,這樣就可以提交了
解決辦法2:
在文件上面點擊右鍵,到SVN的菜單,應該有編輯沖突的按鈕,選擇就會出現一個窗口,一邊是伺服器版本,一邊是自己修改的版本 。
9、xcode自帶svn的使用
1、代碼中 某文件後面有 「M」 標記,表示該文件已被修改,需要 commit.
(右鍵該文件 -> source control -> commit selected file…)
2、代碼中 某文件後面有 「A」 標記,表示該文件是新添加的,已受SVN管理,需要 commit.
(右鍵該文件 -> source control -> commit selected file…)
3、代碼中 某文件後面有 「?」 標記,表示該文件是新添加的,並且脫離了SVN的管理,首先需要add,然後 commit.
(右鍵該文件 -> source control -> Add,這樣該文件的標記就變為 「A」,然後在 commit)。
㈢ mac下svn怎麼checkout
1、Xcode4蘋自帶SVN軟體------>Organizer------>Repositories
2、SVN checkout本刪除本file伺服器影響?
影響伺服器執行svn updatezai再自載;刪除再執行svn commit伺服器應刪除
3、連接伺服器
點擊file-》repositories-》點擊坐邊+-》名字及svn伺服器址type選subversionnext等等
4、Xcode4,SVN用命令
Commit 提交
checkout 伺服器載本(我使用電腦)
update 更新文件
File------->SourceController------->update
圖片第3按鈕,視圖比按鈕.
5、SVN用詳解注意事項
①提交自代碼
SVN更新原則要及更新及提交完功能能夠通編譯並且並且自測試盡量早提交保存歷史版本必要候滾;始工作前update項目
②保持原提交(要經意間修改並提交別文件)
僅提交修改部要整項目提交;
完功能或文件提交我遇完某功能沒提交做更改結代碼現bug恢復代碼
③要提交自文件
VisualStudio等發工具程產自文件.suo等配置文件Debug,Release,Obj等編譯文件及其些自同編譯代碼關文件些文件提交候應該簽入簽入需要倉庫刪除
④要提交能通編譯代碼
代碼提交前首先要確認自能夠本編譯進行SVN提交更新代碼提交前已經通自測試
SVN用命令詳解
1、文件checkout本目錄
svn checkout path(path伺服器目錄)
例:svn checkout svn://192.168.1.1/pro/domain
2、往版本庫添加新文件
svn add file
例:svn add test.php(添加test.php)
3、刪除文件
svn delete path -m delete test fle
例:svn delete svn://192.168.1.1/pro/domain/test.php -m delete testfile
4、查看志
svn log path
5、比較差異
svn diff path(修改文件與基礎版本比較)
6、兩版本間差異合並前文件
svn merge -r m:n path
SVN使用
更新(update)經update沒壞處特別項目每提交(commit)前進行更新(update)新版本svn提示前拷貝期需要更新
提交(commit)定要寫提交內容摘要便於查閱
文件checkout本目錄
svn checkout path(path伺服器目錄)
svn update命令自用伺服器版本替換本版本控制文件
6、Xcode使用SVN問題及提交解決沖突問題
XcodeSVN功能Eclipsesubclipse或者windowstortoiseSVN比較起功能差
我索性用直接用命令行我看朋友用subclipse其實挺使用SVN功能要單獨耗費資源Eclipse
論使用SVN工具都遇Xcode固問題即project.pbxproj文件提交沖突問題
project.pbxproj文件麵包含構建程所需所文件項目目錄增加新文件比沒通Xcode該文件project.pbxproj文件app同理SVN更新其項目員增加文件沒更新project.pbxproj文件(或者該員根本沒提交文件)則現相同現象
項目員提交新project.pbxproj文件邊沒項目增加新文件直接svn update
7、Xcode更新代碼項目文件打
若選擇更新整項目經現沖突問題尤其project.pbxproj文件文件包含構建程所需所文件項目目錄增加新文件沒通Xcode
該文件project.pbxproj文件app同理SVN更新其項目員增加文件
沒更新project.pbxproj文件(或者該員根本沒提交文件)則現相同現象文件沖突直接導致項目文件打
解決更新代碼打項目文件:
項目文件tobacco.xcodeproj打右鍵選擇'顯示包內容'看三文件project.pbxproj/user.modelv3/user.pbxuser
其project.pbxproj三版本解決普通svn文件沖突解決沖突即
8、SVN 更新 提交 合並 區別
本文件沒改伺服器文件改候更新伺服器取文件覆蓋前文件
本文件改伺服器文件沒改更新文件
本文件改伺服器文件改改部沖突合並文件本沖突提示文件沖突需要自手修改傳伺服器
講解合並:
伺服器本同文件(所謂同文件應該SVN相路徑相同文件名相同文件由SVN留本信息決定)已經修改且修改部重合重疊
滿足面條件候再更新SVN自合並
SVN奧妙處於別提交修改文件再提交允許提交滴
>>>>
<<<
面標記沖突區域沖突區域刪除掉能提交
解決辦1:
刪掉沒解決沖突文件面幾文件名相同綴同文件
知道用SVN解決沖突簡單辦
文件改名字文件所目錄更新伺服器文件自修改部添加更新文件面提交
解決辦2:
文件面點擊右鍵SVN菜單應該編輯沖突按鈕選擇現窗口邊伺服器版本邊自修改版本
9、xcode自帶svn使用
1、代碼 某文件面 M 標記表示該文件已修改需要 commit.
(右鍵該文件 -> source control -> commit selected file...)
2、代碼 某文件面 A 標記表示該文件新添加已受SVN管理需要 commit.
(右鍵該文件 -> source control -> commit selected file...)
3、代碼 某文件面 ? 標記表示該文件新添加並且脫離SVN管理首先需要add commit.
(右鍵該文件 -> source control -> Add該文件標記變 A commit).
㈣ svn命令使用方法
在svn
commit後面可以附加參數指定路徑的,這個路徑你指定為這單個文件就行了
svn
commit
[path...]
使用svn
help
commit查看commit指令的詳細幫助
另外如果用tortoisesvn等客戶端的話,在這單個文件上點右鍵,然後選擇commit菜單就行了
㈤ mac自帶的svn怎麼請求windows下的svn的代碼
1、Xcode4中蘋果有自帶的SVN軟體------>Organizer------>Repositories 2、SVN checkout到本地後,刪除本地file,對伺服器有影響嗎? 不會影響伺服器,當你執行「svn update」時會zai再次被自動下載;當刪除後再執行「svn commit」就會在伺服器上也對應刪除。 3、連接伺服器 點擊file-》repositories-》點擊坐下邊的「+」-》然後名字及svn伺服器的地址,還有type選中subversion然後next等等了。 4、Xcode4下,SVN中常用命令 Commit 提交 checkout 將伺服器上下載到本地(我個正在使用的電腦) update 更新文件 File------->SourceController------->update 圖片中第3個按鈕,是視圖對比按鈕. 5、SVN中用法詳解和注意事項 ①提交自己的代碼 SVN更新的原則是要及時更新,及時提交。當完成了一個小功能,能夠通過編譯並且並且自己測試之後,盡量早的提交,這樣也保存了歷史版本,必要時候可以回滾;在開始一天的工作之前,最後update一下項目。 ②保持原子提交(不要不經意間修改並提交了別人的文件) 僅提交你修改的部分,最好不要一下子將整個項目提交; 當完成一個功能或文件後,最好提交。我就遇到完成某個功能後,沒有提交,後來又做了更改,結果代碼出現bug,無法恢復到正常時的代碼。 ③不要提交自動生成的文件 VisualStudio等開發工具在生成過程中會產生很多自動文件,如.suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動生成,同編譯代碼無關的文件,這些文件在提交的時候不應該簽入,如果不小心簽入了,需要從倉庫中刪除。 ④不要提交不能通過編譯的代碼 代碼在提交之前,首先要確認自己能夠在本地編譯。進行SVN提交更新時最好是代碼在提交前已經通過自己的測試。 SVN中常用命令詳解 1、將文件checkout到本地目錄 svn checkout path(path是伺服器上的目錄) 例如:svn checkout svn://192.168.1.1/pro/domain 2、往版本庫中添加新的文件 svn add file 例如:svn add test.php(添加test.php) 3、刪除文件 svn delete path -m 「delete test fle「 例如:svn delete svn://192.168.1.1/pro/domain/test.php -m 「delete testfile」 4、查看日誌 svn log path 5、比較差異 svn diff path(將修改的文件與基礎版本比較) 6、將兩個版本之間的差異合並到當前文件 svn merge -r m:n path SVN使用方法 更新(update),經常地update沒有壞處,特別是多人項目中。如果每次提交(commit)前不進行更新(update)的到最新的版本的話,svn會提示當前的拷貝過期,需要更新。 提交(commit),一定要寫上這次提交的內容的摘要,便於以後查閱。 將文件checkout到本地目錄 svn checkout path(path是伺服器上的目錄) svn update命令自動用伺服器上的版本替換本地版本控制的文件 6、Xcode中使用SVN問題以及提交解決沖突問題 Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比較起來功能還差很多。 我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其實也挺好,不過,為了使用SVN功能要單獨開一個耗費資源的Eclipse。 但是,不論使用什麼SVN工具,都會遇到Xcode固有的問題,即project.pbxproj文件的提交沖突問題。 project.pbxproj文件裡麵包含了構建過程所需的所有文件,如果你在項目目錄下增加了新文件,比如沒有通過Xcode,該文件就不在project.pbxproj文件中,就不會生成到app中。同理,如果你從SVN中更新到其他項目成員增加的文件,而沒有更新project.pbxproj文件(或者該成員根本就沒有提交這個文件),則也會出現相同的現象。 如果項目成員提交了新的project.pbxproj文件,你這邊沒有在項目中增加新的文件,直接svn update就可以了。 7、Xcode中更新代碼後項目文件打不開 若選擇更新整個項目經常會出現沖突問題,尤其是project.pbxproj文件。此文件包含了構建過程所需的所有文件,如果在項目目錄下增加了新文件,但沒有通過Xcode, 該文件就不在project.pbxproj文件中,就不會生成到app中。同理,如果從SVN中更新到其他項目成員增加的文件, 而沒有更新project.pbxproj文件(或者該成員根本就沒有提交這個文件),則也會出現相同的現象。這一文件沖突將直接導致項目文件打不開。 解決更新代碼後打不開項目文件方法: 當項目文件如tobacco.xcodeproj打不開時可以右鍵選擇'顯示包內容',會看到有三個文件,project.pbxproj/user.modelv3/user.pbxuser。 其中project.pbxproj有三個版本,和解決普通svn文件沖突一樣解決沖突即可。 8、SVN 更新 提交 合並 區別 當本地文件沒有改動,伺服器文件改動的時候,更新會從伺服器取文件覆蓋當前文件 當本地文件有改動,伺服器文件沒改動的話,不會更新此文件 當本地文件有改動,伺服器文件有改動的話,如果改動的部分不沖突,就會合並文件到本地,如果有沖突的話,會提示文件沖突,需要自己手動修改以後上傳到伺服器。 最後一個講解合並: 伺服器和本地的同一個文件(所謂同一個文件應該就是SVN相對路徑相同,文件名相同的文件,這個由SVN留在本地的信息決定)已經修改,且修改的部分不重合,不重疊 當滿足上面的條件的時候再更新,SVN就會自動合並 SVN的奧妙之處就在於別人提交了修改後的文件,你再提交你的話,他是不允許你提交滴。。。 >>>> <<< 裡面標記的是沖突的區域,把沖突區域刪除掉為什麼還不能提交 解決辦法1: 刪掉的話還是沒有解決沖突,文件後面還會有幾個文件名相同,但是後綴不同的文件 如果你不知道用SVN解決沖突的話,最簡單的辦法是這樣的 把這個文件改名字,然後在文件所在目錄更新,這樣就會把伺服器文件下下來,然後把自己修改的部分添加到更新的文件裡面,這樣就可以提交了 解決辦法2: 在文件上面點擊右鍵,到SVN的菜單,應該有編輯沖突的按鈕,選擇就會出現一個窗口,一邊是伺服器版本,一邊是自己修改的版本 。 9、xcode自帶svn的使用 1、代碼中 某文件後面有 「M」 標記,表示該文件已被修改,需要 commit. (右鍵該文件 -> source control -> commit selected file...) 2、代碼中 某文件後面有 「A」 標記,表示該文件是新添加的,已受SVN管理,需要 commit. (右鍵該文件 -> source control -> commit selected file...) 3、代碼中 某文件後面有 「?」 標記,表示該文件是新添加的,並且脫離了SVN的管理,首先需要add,然後 commit. (右鍵該文件 -> source control -> Add,這樣該文件的標記就變為 「A」,然後在 commit).
㈥ 誰能幫我詳解Svn如何打版本號怎麼還原以前的版本
每次成功提交文檔都會由自然數累加版本號。點擊了Commit命令,SVN就會生成一個新的版本號,再添加,再Commit後,版本號就會增加
1
,SVN的版本號就是這樣累加出來得。
要是還原以前的版本號,你得先知道以前版本號是多少?
然後使用SVN
Switch命令,把你原來的版本號輸入,點擊確認就以回到原版本了
㈦ SVN常用命令及例句
1、Linux命令行下將文件checkout到本地目錄
svn checkout path(path是伺服器上的目錄)
例如:svn checkout svn://192.168.1.1/pro/domain
簡寫:svn co
2、Linux命令行下往版本庫中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加當前目錄下所有的php文件)
3、Linux命令行下將改動的文件提交到版本庫
svn commit -m 「LogMessage「 [-N] [--no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)
例如:svn commit -m 「add test file for my test「 test.php
簡寫:svn ci
4、Linux命令行下的加鎖/解鎖
svn lock -m 「LockMessage「 [--force] PATH
例如:svn lock -m 「lock test file「 test.php
svn unlock PATH
5、Linux命令行下更新到某個版本
svn update -r m path
例如:
svn update如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。
svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)
svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為沖突,需要先update,修改文件,然後清除svn resolved,最後再提交commit)
簡寫:svn up
6、Linux命令行下查看文件或者目錄狀態
1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)
【?:不在svn的控制中;M:內容被修改;C:發生沖突;A:預定加入到版本庫;K:被鎖定】
2)svn status -v path(顯示文件和子目錄狀態)
第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最後一次修改的版本號和修改人。
註:svn status、svn diff和 svn revert這三條命令在沒有網路的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
簡寫:svn st
7、Linux命令行下刪除文件
svn delete path -m 「delete test fle「
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m 「delete test file」
或者直接svn delete test.php 然後再svn ci -m 『delete test file『,推薦使用這種
簡寫:svn (del, remove, rm)
8、Linux命令行下查看日誌
svn log path
例如:svn log test.php 顯示這個文件的所有修改記錄,及其版本號的變化
9、Linux命令行下查看文件詳細信息
svn info path
例如:svn info test.php
10、Linux命令行下比較差異
svn diff path(將修改的文件與基礎版本比較)
例如:svn diff test.php
svn diff -r m:n path(對版本m和版本n比較差異)
例如:svn diff -r 200:201 test.php
簡寫:svn di
11、Linux命令行下將兩個版本之間的差異合並到當前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合並到當前文件,但是一般都會產生沖突,需要處理一下)
12、Linux命令行下SVN 幫助
svn help
svn help ci
以上是常用命令,下面寫幾個不經常用的
13、Linux命令行下版本庫下的文件和目錄列表
svn list path
顯示path目錄下的所有屬於版本庫的文件和目錄
簡寫:svn ls
14、Linux命令行下創建納入版本控制下的新目錄
svn mkdir: 創建納入版本控制下的新目錄。
用法: 1、mkdir PATH…
2、mkdir URL…
創建版本控制的目錄。
1、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,並且加入新增調度,以待下一次的提交。
2、每個以URL指定的目錄,都會透過立即提交於倉庫中創建.在這兩個情況下,所有的中間目錄都必須事先存在。
15、Linux命令行下恢復本地修改
svn revert: 恢復原始未改變的工作副本文件 (恢復大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不會存取網路,並且會解除沖突的狀況。但是它不會恢復被刪除的目錄
16、Linux命令行下代碼庫URL變更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一個新的URL,其行為跟「svn update」很像,也會將伺服器上文件與本地文件合並。這是將工作副本對應到同一倉庫中某個分支或者標記的方法。
2、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個命令更新工作副本與倉庫的對應關系。
17、Linux命令行下解決沖突
svn resolved: 移除工作副本的目錄或文件的「沖突」狀態。
用法: resolved PATH…
注意: 本子命令不會依語法來解決沖突或是移除沖突標記;它只是移除沖突的相關文件,然後讓 PATH 可以再次提交。
18、Linux命令行下輸出指定文件或URL的內容。
svn cat 目標[@版本]…如果指定了版本,將從指定的版本開始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)
以上是Linux命令行下常用svn命令的使用方法。
㈧ mac系統怎麼前往svn服
1、Xcode4蘋自帶SVN軟體------>Organizer------>Repositories
2、SVN checkout本刪除本file伺服器影響?
影響伺服器執行svn updatezai再自載;刪除再執行svn commit伺服器應刪除
3、連接伺服器
點擊file-》repositories-》點擊坐邊+-》名字及svn伺服器址type選subversionnext等等
4、Xcode4,SVN用命令
Commit 提交
checkout 伺服器載本(我使用電腦)
update 更新文件
File------->SourceController------->update
圖片第3按鈕,視圖比按鈕.
5、SVN用詳解注意事項
①提交自代碼
SVN更新原則要及更新及提交完功能能夠通編譯並且並且自測試盡量早提交保存歷史版本必要候滾;始工作前update項目
②保持原提交(要經意間修改並提交別文件)
僅提交修改部要整項目提交;
完功能或文件提交我遇完某功能沒提交做更改結代碼現bug恢復代碼
③要提交自文件
VisualStudio等發工具程產自文件.suo等配置文件Debug,Release,Obj等編譯文件及其些自同編譯代碼關文件些文件提交候應該簽入簽入需要倉庫刪除
④要提交能通編譯代碼
代碼提交前首先要確認自能夠本編譯進行SVN提交更新代碼提交前已經通自測試
SVN用命令詳解
1、文件checkout本目錄
svn checkout path(path伺服器目錄)
例:svn checkout svn://192.168.1.1/pro/domain
2、往版本庫添加新文件
svn add file
例:svn add test.php(添加test.php)
3、刪除文件
svn delete path -m delete test fle