2013-05-21 54 views
0

我如何使用pysvn.client合併相關的功能來實現摘櫻桃合併,如何使用pysvn.Client.merge_peg2實現摘櫻桃從一個合併

合併特定版本(或修訂範圍)分支到另一個,

svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH] 

現在我使用pysvn.Client.merge_peg2(http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_client_merge_peg2),沒有警告和錯誤,但不能工作。

我很迷惑有關merge_peg2及其參數

merge_peg2(sources, 
    ranges_to_merge, 
    peg_revision, 
    tareget_wcpath, 
    depth=depth, 
    notice_ancestry=False, 
    force=False, 
    dry_run=False, 
    record_only=True, 
    merge_options=[]) 

sources   # the source repo url which merge from? 
ranges_to_merge #"a list of tuples with the start and end revisions to be merged"?how can I generate this revision range? 
peg_revision #pysvn.Revision(pysvn.opt_revision_kind.unspecified) is ok? 
tareget_wcpath #I fill this with the dest local repo 

任何建議,例子或其他解決方案?

回答

1

這是我做櫻桃採摘合併。對您選擇的修訂進行排序並對此進行迭代。

def merge_to_wc(r): 
    WC_PATH = '.' 
    FROM_URL = 'https:/svn.somewhere.org/my_project/branches/1.0' 

    pysvn.merge_peg(
    FROM_URL, 
    pysvn.Revision(pysvn.opt_revision_kind.number, r-1), 
    pysvn.Revision(pysvn.opt_revision_kind.number, r), 
    pysvn.Revision(pysvn.opt_revision_kind.head), 
    WC_PATH) 

該方法通過反覆試驗才發現,搜索互聯網,猜測,和許多咬牙切齒。