2022/02/14

SVN 筆記

checkout

    從 server 拉來本地, 簡寫 co
    checkout URL[@REV]... [PATH]
    例:
        svn co svn+ssh://repo/home/svn/mybranch mybranch 

    直接 checkout 指定版本
        svn co -r version svn+ssh://repo/home/svn/mybranch mybranch

commit

    將本地的修改推到 server, 簡寫 ci
    commit [PATH...]
    例:
        svn ci file1 file2 path1/file3

copy

    複製成新的 branch, 簡寫 cp
    copy SRC[@REV]... DST
    例:
        svn cp svn+ssh://repo/home/svn/mybranch svn+ssh://repo/home/svn/newbranch

status

    檔案狀態, 簡寫 st
    svn st [PATH...]
    例:
        svn st

merge

    合併,
    svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]
    例: 把 trunk 的修改合併進來.
        svn merge svn+ssh://repo/trunk
    例: 退回 oldver. 完成後重新 commit. 可以保留原先變更的版本參考
        svn merge -r 123:115 svn+ssh://repo/develop
    例: 檔案退回 oldver. 完成後重新 commit 可以保留原先變更的版本參考
        svn merge -r 123:115 path/filename

update

    更新,
    svn update [PATH...]
    例:
        svn up
    例:
        svn up -r 115

cherry-pick

    摘櫻桃
    svn merge -r N:M SOURCE

    例: (從 repo/develop 摘取從 r98 到 r99 所做的變更)
        svn merge -r 98:99 svn+ssh://repo/develop

svn merge 出現下列訊息:

    svn local file obstruction incoming file add upon merge
        這是因為本地跟merge源個別 add 檔案造成的, 解決方法:
            先手動比較兩個版本的差異, 並將檔案修改到最終想要的版本. 然後執行
                svn resolve --accept working <file>
            意思是接受 working 的版本來解決衝突.