2011-08-15 17 views
11

Şu anda SVN deposuna bağlı olan Intellij IDEA projelerine sahibim. SVN deposuna bağlı olmadığımda yerel bir sürüm kontrol sistemine ihtiyaç duyduğum için bu projeleri Git SVN kullanmak için değiştirmeyi düşünüyorum. Intellij IDEA Git SVN köprüsü sağlamaz yanaVarolan Intellij IDEA projelerini SVN'den Git SVN'ye geçirme SVN

, ben Git için SVN deposunu klonlamak için komut satırından aşağıdaki komutu çalıştırın: - SVN deposu klonlama sonra

git svn clone --stdlayout --username myuser http://svnrepo/myproject -A authors.txt myproject 

, ben açmak Intellij IDEA kullanan Git tabanlı proje. Bu noktada Intellij IDEA, eksik sürüm kontrol dizinlerinden şikayetçidir. Intellij IDEA'nın eski SVN konfigürasyonunu hala hatırladığını öğrendim. Proje artık .svn dizinleri yerine .git dizinleri içerdiğinden, Intellij IDEA şaşkın hale geliyor ve şu anda herhangi bir depoya nasıl bağlanacağını bilmiyor.

benim için çalışıyor tek geçici çözüm şunları yapmaktır: -

  • SVN deposu yepyeni bir proje (boş projesi) oluşturun.
  • "Git svn clone" gerçekleştirin.
  • Projeyi Intellij kullanarak oluşturun.
  • Bu noktada, Intellij IDEA .git dizinlerini algılar ve yeni oluşturulan dosyaların Git'e eklenip eklenmeyeceğini sorar.
  • SVN tabanlı projeden Git tabanlı projeye her şeyi kopyalayın.

Yani, bu Intellij IDEA projesinde Git'i tek bir makinede çalıştıramıyor ve aynı zamanda başka bir makinede bu Intellij IDEA projesinde SVN'yi kullanamıyorum. Her iki makinede de Git kullanılmalı ya da Intellij IDEA sürüm kontrol havuzuna bağlı kalmayacaktır. Bu konuda iyiyim ve Git'i tüm makinelerimde kullanabilirim. Bununla birlikte, mevcut tüm SVN tabanlı projelerim için yepyeni Git tabanlı projeler oluşturmamanın bir yolunu bulmaya çalışıyorum. Bu çok can sıkıcı çünkü hemen Git'i kullanarak çalıştırmam gereken birkaç SVN projem var.

SVN projelerimi Intellij IDEA kullanarak Git'e geçirmem için daha iyi bir çözüm var mı?

Teşekkürler.

cevap

31

Geçerli proje için sürüm kontrol sistemini File | Settings | Version Control dan seçebilirsiniz. Bu ayar proje dosyalarından birinde saklanır (.idea/vcs.xml), eğer bu dosyayı sürüm kontrolüne tabi tutmazsanız, farklı makinelerdeki farklı sürüm kontrol sistemini kullanabilirsiniz.

+0

teşekkür ederiz iletişim içinde açılır menüyü gösterir. Git'i ekledim ve SVN'yi vcs.xml biçiminde bıraktım. Bu, Git'i bir makinede ve başka bir makinede SVN kullanarak çalışmama izin veriyor gibi görünüyor. – limc

+0

Android Studio 1.2.2'de Ayarlar | Proje ayarları. Ayarları sil altında Subversion ile girişi silerek SVN kaldırmak mümkün oldu Sürüm Kontrolü. Bu, ve menü öğesi VCS | olarak değiştirildi. Sürüm Kontrolü Entegrasyonunu Etkinleştir daha sonra kullanılabilir oldu. Git'i etkinleştirmek için kullandım. Bu ayrıca .idea/vcs.xml olarak değiştirildi. –

+0

Artık "proje ayarı" yok, tüm ayarlar aynı iletişim kutusunun içinde. Ama cevap hala geçerli. –

1

BTW, IntelliJ Idea'de yerleşik Git desteğini kullanabilirsiniz. SubGit'u Subversion deponuza yükleyin ve genellikle git-svn olmaksızın oluşturulmuş Git deposuyla çalışın.

SubGit sunucu tarafında çalışır ve her gelen değişiklik için Subversion ve Git depolarını senkronize eder.

+0

SubGit'i kullanmayı gerçekten çok isterim (bunun için ödeme yapmamayı umursamıyorum), ancak bizim depomuzda olduğu gibi, birçoğumuzdaki gibi, SubGit'in tutamayacağı bir sürü gariplik (eski dışsallıklar, garip dallanmalar) geçmişte stratejiler, vb. Bazıları son yıllarda düzelttik, ancak birçoğu düzeltilemez ya da düzeltilmesi için herhangi bir maliyete sahip olamaz. – Quartz

+0

@Quartz deneyimlerimizden, eski ve çirkin Subversion deposuyla ilgili bir şey var, bu, boşaltma/yükleme döngüsü yoluyla düzeltmek veya sadece Git'e aktarırken bazı eski düzeltmeleri bırakmak olabilir. [email protected] adresinden bizimle iletişime geçmekten çekinmeyin ve Subversion deponuzun tüm çirkinliklerini tanımlayın :) Özel durumunuz için olası çözümleri önermeye çalışacağız; Yakın gelecekte uygulamayı planladığımız özellikler için de öncelikleri değiştirebiliriz. – vadishev

1

Dosya tabanlı projeler için leke filtresini ayarlayabilirsiniz.

.git/bilgi/öznitelikleri (veya.)

/*.ipr filter=vcs 

Sonra ~/bin benim yerel komut dosyalarını depolamak (aşağıdaki çalıştırabilir, ancak her yerde onları koyabilirsiniz: gitattributes) satırını ekleyin

git config --global filter.vcs.smudge /path/to/filter-vcs-git 
git config --global filter.vcs.clean /path/to/filter-vcs-svn 

My filtre-vcs-git () Git kullanımı vcsDirectoryMappings mapping hatları bulaşmaya:

#!/bin/bash 
sed 's/vcs="svn"/vcs="Git"/' 

My filtre VCS-svn() svn kullanımı vcsDirectoryMappings mapping hatları temizleyin:

#!/bin/bash 
sed 's/vcs="Git"/vcs="svn"/' 

Bu yalnızca sed ile * NIX sistemlerinde çalışır. Ancak, sed dosyasını kurarak ve bir .bat betiğini yazarak, yukarıdaki kabuk betikleriyle aynı şeyi yapmak için pencerelerde de yapabilmeniz gerekir. Filtreler sadece dosyayı stdin'den alır ve filtrelenmiş dosyayı stdout'a tükürür.

dahaki sefere

bunu git kullanmak filtre edilecektir dosya .ipr ödeme ve bunu ( git add *.ipr) eklerken taahhüt dosyası svn kullanır böylece temizlenecektir. Bu, bu satırda hiçbir şeyin değişmediğini düşünmek için yapılan tüm araçlarla ( git diff gibi) temiz bir şekilde çalışıyor gibi görünüyor.

0

enter image description here kullanabilirsiniz VCS Sürüm Kontrol Ayarları