2010-12-07 21 views
21

Bulunduğum svn klonlanmış dalları (-s standart düzeni 'kullanarak) seçeneği denir:git-svn yeniden adlandırma izleme şube

$ git branch -r 
branch1 
branch2 

az onlar öyle ki bu, yeniden adlandırmak istiyorum:

Aslına bakılırsa $ git-svn clone --prefix svn 'yi ilk başta denedim. Uzak taraftaki isimleri değiştirmem gerekmiyor.

cevap

32

Eğer git remote add ... ile eklenmiş başka uzaktan olmadığını varsayarsak, bu prosedürü deneyin:

  1. git gc.git/packed-refs içine tüm ref paketlemek için.
  2. Düzenleme için .git/packed-refs'u açın. "Refs/remotes/svn /" ile "refs/remotes /" değiştirin.
  3. Düzenleme için .git/config'u açın.

    [svn-remote "svn"] 
        url = SVN_REPO_URL 
        fetch = trunk:refs/remotes/trunk 
        branches = branches/*:refs/remotes/* 
        tags = tags/*:refs/remotes/tags/* 
    

    "ref/uzaktan kumanda/svn /" ile "ref/uzaktan kumanda /" Değiştir: Bir şey gibi görmelisiniz

    [svn-remote "svn"] 
        url = SVN_REPO_URL 
        fetch = trunk:refs/remotes/svn/trunk 
        branches = branches/*:refs/remotes/svn/* 
        tags = tags/*:refs/remotes/svn/tags/* 
    

    da herhangi bir uzak izleme dalları güncellemeyi unutmayın. Bunu yapmak için, tüm dosyada "refs/remotes /" ile "refs/remotes/svn /" ifadesini değiştirebilirsiniz.

Bu yordamı, GNU Nano deposunun git-svn aynasının bir kopyasıyla test ettim ve işe yarayacak gibi görünüyor.

DÜZENLEME: Sadece bu prosedür pisliği git-svn dcommit değil ya operasyonları rebase doğruladıktan. --prefix=svn/ özgün olarak git svn clone -s SVN_REPO_URL komutunda belirtilmiş gibi.

+0

Teşekkür ederiz, bu kapsamlı! –

+5

Ayrıca ".git/svn/refs/remotes/trunk" ifadesini ".git/svn/refs/remotes/svn/trunk" 'e taşımak zorunda kaldım - "Açık" aldım: C gibi bir dosya veya dizin yok: \ Program dosyaları (x86) \ Git/libexec/git-core \ git-svn satır 561' hata 'git svn getirme '' yaparken. –

+0

Git-svn'nin daha yeni sürümlerinde, init veya clone komutlarında belirtilmemişse, varsayılan önek "origin /" şeklindedir. Ayrıca, .git/info/refs dosyasındaki "refs/remotes/origin" referanslarının da olduğunu fark ettim. Muhtemelen bunların da "refs/remotes/svn" olarak yeniden adlandırılması gerekiyor mu? –

İlgili konular