SORU
19 Mart 2009, PERŞEMBE


SVN için varolan git bir depo bastırıyor

Git içinde her işimi ve GitHub için zorluyordum. Yazılım ve site ile çok mutlu oldum ve bu noktada çalışma şeklimi değiştirmek gibi bir niyetim yok.

Doktora danışmanım tüm öğrencilerin üniversitede barındırılan bir SVN deposuna işlerini tutmak istiyor. Dokümantasyon ve öğreticiler ton gıt varolan bir SVN repo aşağı çekmek için yaklaşık buldum ama taze bir SVN git repo basma konusunda hiçbir repo. Umuyorum olmalı bir yolu bunu yapmak ile bir arada git-svn ve taze bir dal ve rebasing ve tüm o güzel sözler, ama ben gıt acemi ve hissetme kendinden emin olan herhangi biri.

Ben o zaman sadece komutları birkaç seçiyorum, Git kullanmaya devam etmek istiyorum o zaman SVN repo taahhüt itin ve sadece SVN repo Gıt ne ayna var çalıştırmak istiyorum.

Eğer bu herhangi bir fark yaratır mı tek kişi SVN işlemiş olacağım.

Bunun nasıl yapılacağı hakkında herhangi bir talimat çok mutluluk duyacağız!

CEVAP
21 NİSAN 2009, Salı


Bu da ihtiyacım vardı, ve Bombe cevabı biraz işe yaramaz etrafında yardımı ile çalıştırıyorum. İşte tarifi:

Al git ->svn

1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1.  git status
5.2.  git add (conflicted-files)
5.3.  git rebase --continue
5.4.  (repeat 5.1.)
6. git svn dcommit

#3 sonra böyle şifreli bir ileti alırsınız:

URL daha yüksek seviyede kullanarak: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo

Sadece onu görmezden gel.

#5, kaçacaksınolabilirçatışmalar olsun. Devlet "" ve sürdürme rebase. birleştirilmemiş dosyaları ekleyerek bunları gidermek Eninde sonunda bitecek, Sonra tekrar svn-repo, dcommit kullanarak senkronize edin. Hepsi bu.

Senkronize tutmak repo

Şimdi svn - ^ dan senkronize edebilirsiniz . git, aşağıdaki komutları kullanarak:

git svn fetch
git rebase trunk

Ve git - ^ dan sync için . svn kullanın:

git svn dcommit

Son bir not

Yerel bir kopya üzerinde bunu denemek için, canlı bir repo başvurmadan önce isteyebilirsiniz. Git-repo geçici bir yerde sizin için bir kopyasını, sadece tüm veri repo kendisi gibi cp -r kullanarak yapabilirsiniz. Sonra dosya tabanlı bir test repo kullanarak ayarlayabilirsiniz:

svnadmin create /home/name/tmp/test-repo

Ve çalışan bir kopyasını kontrol, kullanarak:

svn co file:///home/name/tmp/test-repo svn-working-copy

Etrafta herhangi bir kalıcı değişiklik yapmadan önce bir şeyler ile oynamak için izin verir.

Sana git svn init karışıklık . Eğer ek:

Eğer yanlışlıkla git svn init ile yanlış url, sen değil akıllı olmak yeterli bir yedek iş (sormayın ...), koşamazsınız aynı komut tekrar. Ancak yayımlayarak değişiklikleri geri alabilirsiniz:

rm -rf .git/svn
edit .git/config

Ve [svn-remote "svn"] bölüm bölümünü kaldırın.

Sonra git svn init yeniden çalıştırabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005
  • Liberator

    Liberator

    14 EYLÜL 2007
  • Watcher3223

    Watcher3223

    15 Kasım 2007