2011-01-09 5 views
5

다음 문제로 고민하고 있습니다.git-svn이 SVN 분기를 따르는 분기를 만들 수 없습니다.

Found possible branch point: https://somecompany.com/product/trunk 
=> https://somecompany.com/product/branches/deep/branches/product-001, 72666 
Found branch parent: (refs/remotes/deep/branches/product-001) b685b7b92813885fdf 6b8e2663daf884bf504b14 
Following parent with do_switch 
Successfully followed parent 
error: 'refs/remotes/deep' exists; cannot create 'refs/remotes/deep/branches/product-001' 
fatal: Cannot lock the ref 'refs/remotes/deep/branches/product-001'. 
update-ref -m r72667 refs/remotes/deep/branches/product-001 df51920e8f0a53f26507 c2679eb6a9dbad91e0d6: command returned error: 128 

내가 SVN 가지의 기본 필터를 사용하여 버전을 가져 오는했기 때문에 이런 일이 :

[svn-remote "svn"] 
    url = https://somecompany.com/someproduct 
    fetch = trunk:refs/remotes/trunk 
    branches = branches/*:refs/remotes/* 
    tags = tags/*:refs/remotes/tags/* 
을 내가

git svn fetch 

와 SVN에서 개정을 가져 오는 계속 때 나는 다음과 같은 오류를 받고 있어요

이제 아래 라인이 추가되었지만 너무 늦었습니다.

branches = branches/deep/branches/*:refs/remotes/deep/branches/* 

모든 커밋을 제거하기 위해 git svn reset을 사용하여이 문제를 해결하려고했습니다. 실제로 오류 메시지에서 git이 올바른 작업을 시도하고 있지만 브랜치 리모트/딥이 존재하지 않기 때문에 볼 수 없습니다.

두 가지 가능한 솔루션을 찾으려고했습니다 : 1. 해당 브랜치 (원격/깊은)를 제거하십시오. 그러나 리모컨으로 git에서 추적 할 때 그 해결책을 찾지 못했습니다. 2. 해당 지사와 관련된 전체 기록을 제거하십시오. ? 어떤 성공도 :(

누구

답변

4

내 문제를 처리하는 방법을 알고하지 않습니다 나는 다음 2 단계를 수행하여 문제를 해결하려면 결국 수있었습니다 : 심판/리모트 제거

  1. 을/깊은

하지만 여전히 가져 오는으로 문제가 깊은 포장 심판

  • 제거 .git/로그/심판/리모트 /에서. 나는

    를 사용할 필요가 일반 지점에 대한
    branches = branches/*:refs/remotes/* 
    

    과 깊은 지점에 대한

    branches = branches/deep/branches/*:refs/remotes/deep/branches/* 
    

    . 불행히도 이전의 스펙은 나중을 포함하기 때문에 "치명적 : git-svn이 첫 번째 스펙에 따라 깊은 분기를 작성하려고 시도 할 때 ref '/ remotes/deep'를 잠글 수 없습니다.

    지금까지 나는 수동으로 첫 번째 "브랜치"를 주석 처리하고 깊은 브랜치를 사용하여 특정 리비전을 가져 오는 방법으로 작업을 수행했습니다.하지만 두 가지 경우 모두 가져올 리비젼이 너무 많아서 좋은 옵션이 아닙니다.

    UPD : 남은 문제에 대해 간단하지만 좋지 않은 해결책을 찾았습니다. 분기를 사용하여 딥 브랜치에 대한 경로를 지정하고 페치 (fetch)하여 첫 번째 레벨의 모든 분기를 지정합니다.

  • +0

    /깊은 깊은/.git/로그/심판/리모트 제거 2. 포장 된-심판에서 설명해 주시겠습니까? – ryenus

    +0

    rm 또는 del에 의해 당신이 사용하는 운영 체제에 따라 –

    1

    나는 매우 비슷한 문제가 있었고 "git svn reset"이 아니라 "git reset"이 수정됨을 발견했습니다. 미리 브랜치 구성을 업데이트하지 않으면 브랜치 포인트를 통과하는 커밋을 검색 한 후 백업을 다시 받아야 다시 검색 할 수 있습니다. 그렇지 않으면 부모없이 매달려 있습니다.

    그래서, 다음, 이전과 당신의 지점을 업데이트

    git svn reset -r<revisionnum> 
    

    을 실행하고 정상적으로 가져 오기 당신의 자식 SVN에 따릅니다. 이것은 SVN에서 모든 것을 재건하는 많은 시간을 절약 해주었습니다.

    내포 된 지점을 추적하지 않으려면 "무시"기능을 조사해야 할 수도 있습니다. 어떻게 할 1. 제거 심판/리모트에 대한

    +0

    사실, 내가 실수로 git svn reset –

    관련 문제