2011-08-15 12 views
11

Mam obecnie istniejące projekty Intellij IDEA, które są powiązane z repozytorium SVN. Zastanawiam się nad przełączeniem tych projektów na Git SVN, ponieważ uważam, że muszę mieć lokalny system kontroli wersji, gdy nie jestem podłączony do repozytorium SVN.Jak zmienić istniejące projekty Intellij IDEA z SVN na Git SVN

Ponieważ Intellij pomysł nie zapewniają mostek GIT svn uruchomić polecenie z linii polecenia do klonowania repozytorium SVN do git: -

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

Po klonowaniu repozytorium svn otwierania Projekt oparty na Git za pomocą Intellij IDEA. W tym momencie Intellij IDEA skarży się na brakujące katalogi kontroli wersji. Dowiedziałem się, że Intellij IDEA nadal pamięta starą konfigurację SVN. Ponieważ projekt zawiera teraz katalogi .git zamiast katalogów .svn, Intellij IDEA jest zdezorientowany i nie wie, jak połączyć się z repozytoriami właśnie teraz.

Jedyne obejście że pracuje dla mnie jest, aby wykonać następujące czynności: -

  • Utwórz nowy projekt (pusty projekt) w repozytorium SVN.
  • Wykonaj "git svn clone".
  • Utwórz projekt za pomocą Intellij na nim.
  • W tym momencie Intellij IDEA wykrywa katalogi .git i pyta, czy dodać nowo utworzone pliki do Git.
  • Skopiuj wszystko z projektu opartego na SVN do projektu opartego na Git.

Powiedział, że nie mogę uruchomić Git na tym projekcie Intellij IDEA na jednym komputerze, a jednocześnie używać SVN w tym projekcie Intellij IDEA na innym komputerze. Oba komputery muszą używać Git, inaczej Intelli IDEA nie będzie w stanie zatwierdzić repozytorium kontroli wersji. Czuję się z tym dobrze i mogę używać Gita we wszystkich moich maszynach. Jednak staram się znaleźć sposób, aby nie tworzyć zupełnie nowych projektów opartych na Git dla wszystkich moich istniejących projektów opartych na SVN. Jest to bardzo uciążliwe, ponieważ mam kilka projektów SVN, które muszę teraz uruchomić używając Git.

Czy istnieje lepsze rozwiązanie, aby zamienić projekty SVN na Git za pomocą Intellij IDEA?

Dzięki.

Odpowiedz

31

Można wybrać system kontroli wersji dla bieżącego projektu z File | Settings | Version Control. Ustawienie jest przechowywane w jednym z plików projektu (.idea/vcs.xml), więc jeśli nie zatwierdzisz tego pliku do kontroli wersji, możesz użyć innego systemu kontroli wersji na różnych komputerach.

+0

Dziękuję. Dodałem Gita i zostawiłem SVN w wersji vcs.xml. Wydaje się, że pozwala mi to na pracę z Git na jednej maszynie i SVN na innej maszynie. – limc

+0

W Androidzie Studio 1.2.2 nie ma ustawień | Ustawienia projektu. Udało mi się usunąć SVN, usuwając wpis z Subversion w Ustawieniach | Kontrola wersji. To zmieniło go na i pozycję menu VCS | Włączona integracja kontroli wersji była wtedy dostępna. Użyłem tego, aby włączyć Git. Zmieniło się również .idea/vcs.xml. –

+0

Nie ma już "ustawień projektu", wszystkie ustawienia znajdują się w tym samym oknie dialogowym. Ale odpowiedź jest nadal ważna. –

1

BTW, możesz użyć wbudowanej obsługi Git w IntelliJ Idea. Zainstaluj SubGit w swoim repozytorium Subversion i pracuj z utworzonym repozytorium Git jak zwykle, tzn. Bez git-svn.

SubGit działa po stronie serwera i synchronizuje repozytoria Subversion i Git przy każdej wprowadzanej modyfikacji.

+0

Naprawdę chciałbym użyć SubGit (nie miałbym nic przeciwko temu, aby zapłacić za to), jednak nasze repozytorium, podobnie jak wiele innych, jest repozytorium z wieloma dziwactwami, których SubGit po prostu nie może obsłużyć (stare zatwierdzenia na zewnątrz, dziwne rozgałęzienia strategie w przeszłości itd.). Niektóre z nich naprawiliśmy w ostatnich latach, ale wielu nie można naprawić lub nie ma uzasadnienia kosztów. – Quartz

+0

@Quartz z naszego doświadczenia zawsze ma coś wspólnego ze starym i brzydkim repozytorium Subversion, czy to naprawianie za pomocą cyklu dump/load, czy po prostu upuszczanie starszych wersji podczas importowania go do Git. Prosimy o kontakt pod adresem [email protected] i opisanie swojego repozytorium Subversion w całej jego brzydocie :) postaramy się zaproponować możliwe rozwiązania dla konkretnego przypadku; możemy również zmienić priorytety funkcji, które zamierzamy wdrożyć w najbliższej przyszłości. – vadishev

1

W przypadku projektów opartych na plikach można ustawić filtr rozmazywania smugi.

W .git/info/attributes (lub.gitattributes) dodać linię:

/*.ipr filter=vcs 

następnie uruchom następujące (I przechowywać swoje lokalne skrypty w ~/bin, ale można je gdziekolwiek):

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

Moje filtry-VCS-git (rozmazuje vcsDirectoryMappings mapping linie używać git):

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

Moje filtry-VCS-svn (oczyścić vcsDirectoryMappings mapping linie używać SVN):

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

Działa to tylko w systemach * NIX z sed. Ale powinieneś być w stanie to zrobić również w windowsach, instalując sed i pisząc skrypt .bat, aby zrobić to samo, co powyższe skrypty powłoki. Filtry po prostu pobierają plik z filtra stdin i wypluwają przefiltrowany plik na standardowe wyjście.

Następnym razem, gdy pobierzesz plik .ipr, zostanie on przefiltrowany, aby użyć git, a po dodaniu go (git add *.ipr) zostanie wyczyszczony, tak aby zatwierdzony plik używał svn. Wydaje się, że działa to bez problemu ze wszystkimi narzędziami git (takimi jak git diff), które sprawiają wrażenie, że nic się nie zmieniło na tej linii.

0

enter image description here można użyć VCS rozwijanego menu w oknie dialogowym Ustawienia kontroli wersji