GIT czy SVN dla konfiguracji Windows -> Ubuntu Server

0

Witam,
Miałem długą przerwę w programowaniu, postanowiłem sobie podłubać trochę. Generalnie Środowisko chce mieć na Windows, a serwer php, apache, mysql na Ubuntu Server na wirtualnej maszynie (nie próbujcie konfigurować widoczności maszyny w Windows, kiedy macie WiFi, tylko na kabelku to działa, może Wam to zaoszczędzić kilku dni).
Następnie zacząłem szukać jaki SVN wybrać. Znalazłem pełno bluzgów na tych co używają SVN i bluzgający mędrcy pisali, że teraz używa się GIT. No to wgrałem GIT na Ubuntu i Msysgit na Windows.
Tylko czy w ogóle jest jakakolwiek możliwość synchronizacji tego jakże wspaniałego GIT pomiędzy Windows, a Ubuntu? Bo na razie to nawet nie potrafię pobierać plików z repozytorium na jednej maszynie, a co dopiero pobierać je z drugiej, a Googole mi nie pomaga:-) W SVN mogłem sobie synchronizować foldery bez problemu, z tego co pamiętam.

Czy może się tego nie da na przecudnym GIT zrobić i mam używać tego złego SVN'a?:D

Czy jest w ogółe jakaś dokumentacja do GIT, która wyjasnie jak to działa? Jaka jest "architektura" tego, bo informacji na tematy "jak utworzyć repozytorium", "jak utworzyć branch", "jak zrobić commit" itp, to jest pełno, ale żeby coś wyjasnić to nie.
I jeszcze wszyscy w przykładach tworzą pliki tylko w katalogu gdzie utworzyli repozytorium, nigdzie nie znalazłem opisu jak commitować coś z innego katalogu do danego repo. Niby są te branche, które można tworzyć w różnych miejscach, ale jak, kiedy tam nie można wybrać ścieżki?

1
>repo ("folder")
  >.git file (konfiguracja; wszystko, co znajduje się w "folder"ku... znajduje się w repozytorium*.)
  >.gitignore (*poza tym, co jest określone według reguł znajdujących się tutaj)
  >random dirs
    >and random files
    >but we don't care about them
  >more files
3

Chyba nic Ci lepiej nie wyjaśni niż oficjalny Git Book. Dodatkowo jak chcesz sobie zreplikować maszynę na lokalnym serwerze w prosty sposób to polecam Vagranta.

3
arrowman napisał(a):

Czy jest w ogółe jakaś dokumentacja do GIT, która wyjasnie jak to działa? Jaka jest "architektura" tego, bo informacji na tematy "jak utworzyć repozytorium", "jak utworzyć branch", "jak zrobić commit" itp, to jest pełno, ale żeby coś wyjasnić to nie.

Ja bym szukał u źródeł: http://git-scm.com/book

I jeszcze wszyscy w przykładach tworzą pliki tylko w katalogu gdzie utworzyli repozytorium, nigdzie nie znalazłem opisu jak commitować coś z innego katalogu do danego repo. Niby są te branche, które można tworzyć w różnych miejscach, ale jak, kiedy tam nie można wybrać ścieżki?

Git w przeciwieństwie do SVN to nie jest system do zarządzania plikami tylko treścią. Jeśli chcesz commitować coś z jakiegoś katalogu do repozytorium, to musisz mieć ten katalog w repozytorium. A branch w Gicie jest tworem wirtualnym, a nie patologiczną kopią katalogu jak w SVN.

0

Dzięki za booka i Vagranta! Nie wiem dlaczego mi google tego nie wywaliło w wynikach. (może za dużo razy bluzgałem na nich w ich wyszukiwarce)
Chyba do mojego przypadku się GIT nie nadaje. Za dużo zabawy z tymi "remote repositories", bez sensu (zresztą nie mogę znaleźć jak dodać katalog gdzieś daleko w drzewku do danego repo, tylko podrzędne sie dodaja, a merge nie działa tak jak bym chciał:-)). W sumie tak się zastanowiłem, że skoro mogę zrobić ctrl+c, a następnie ctrl+v, to nawet po co mi SVN? Chciałem się tego nauczyć, ale w moim przypadku to chyba całkowicie pozbawione sensu tego używać. Zresztą na Linuxie już nie siedziałem od lat, więc wszystko muszę w google wpisywać co zrobić.

Dzięki za tego booka. Poczytam sobie, to się z tego coś dowiem. A trudno, najwyżej w praktyce tego nie poćwiczę.
I tak uważam SVN za lepszy, bo bardziej przejrzysty. Może jest większe ryzyko utraty danych, ale przynajmniej od razu jest to gotowe do pracy:-)

Ogólnie dzięki!

0
arrowman napisał(a):

Za dużo zabawy z tymi "remote repositories"

One są potrzebne tylko, gdy chcesz mieć repozytorium poza swoim komputerem. Git jest o tyle fajniejszy w porównaniu z SVN, że jest pełnoprawnym repozytorium lokalnym, nie potrzebuje żadnych cudnych serwerów do działania. Instalujesz, tworzysz repozytorium i możesz pracować.

zresztą nie mogę znaleźć jak dodać katalog gdzieś daleko w drzewku do danego repo, tylko podrzędne sie dodaja

Co masz na myśli? Git wykrywa zmiany w katalogu, i podaje listę nowych plików, których nie ma jeszcze dodanych do repozytorium. W sumie podobnie jak SVN, tylko w Gicie oprócz tego działa np. ignorowanie plików.
No chyba, że chcesz dodać pusty katalog - tego oczywiście nie zrobisz, bo to nie ma żadnego sensu. Pusty katalog to nie jest treść.

Generalnie wygodnie używać jakiejś nakładki graficznej na Gita - ja polecam GitExtensions.

a merge nie działa tak jak bym chciał

A jak byś chciał? Merge to włączanie zmian z jednej gałęzi do drugiej, z zachowaniem możliwe najnowszej wersji treści z obu. To jest coś, co akurat w Gicie działa, w SVN nie za bardzo.

W sumie tak się zastanowiłem, że skoro mogę zrobić ctrl+c, a następnie ctrl+v, to nawet po co mi SVN? Chciałem się tego nauczyć, ale w moim przypadku to chyba całkowicie pozbawione sensu tego używać.

No jeśli nie potrzebujesz wersjonowania, to nie potrzebujesz kontroli wersji. My nie wiemy, co Ty chcesz zrobić. ;)

I tak uważam SVN za lepszy, bo bardziej przejrzysty. Może jest większe ryzyko utraty danych, ale przynajmniej od razu jest to gotowe do pracy:-)

Śmieciowe katalogi w każdym podkatalogu, brak efektywnej możliwości ignorowania plików, nie potrafi samodzielnie wykryć przeniesienia/zmiany nazwy pliku tylko musi dublować funkcje systemu operacyjnego... Co to za praca?

0
somekind napisał(a):
arrowman napisał(a):

Za dużo zabawy z tymi "remote repositories"

One są potrzebne tylko, gdy chcesz mieć repozytorium poza swoim komputerem. Git jest o tyle fajniejszy w porównaniu z SVN, że jest pełnoprawnym repozytorium lokalnym, nie potrzebuje żadnych cudnych serwerów do działania. Instalujesz, tworzysz repozytorium i możesz pracować.

Właśnie to chce mieć. Chcę mieć repo z Windy na Ubuntu Server, które postawiłem na VirtualBox (nie próbujcie udostepniać katalogów windzie przy użyciu samby bez Guest Additions, stracice kilka dni życa:D).

somekind napisał(a):

zresztą nie mogę znaleźć jak dodać katalog gdzieś daleko w drzewku do danego repo, tylko podrzędne sie dodaja

Co masz na myśli? Git wykrywa zmiany w katalogu, i podaje listę nowych plików, których nie ma jeszcze dodanych do repozytorium. W sumie podobnie jak SVN, tylko w Gicie oprócz tego działa np. ignorowanie plików.
No chyba, że chcesz dodać pusty katalog - tego oczywiście nie zrobisz, bo to nie ma żadnego sensu. Pusty katalog to nie jest treść.

Nie, nie. Mi chodzi o to, że mam np. repo w d:\test_repo i chcę do niego np. dodać folder w c:\jakies_badziewie. Tutaj mi ani merge nie działa, ani nic.

somekind napisał(a):

a merge nie działa tak jak bym chciał

A jak byś chciał? Merge to włączanie zmian z jednej gałęzi do drugiej, z zachowaniem możliwe najnowszej wersji treści z obu. To jest coś, co akurat w Gicie działa, w SVN nie za bardzo.

No właśnie, a ja chcę żeby mi łączyło 2 repa lub branche (jeszcze nie potrafię skonfigurować). Ale nie robi tego, więc dla mnie nie działa i nie pwoinno się nazywac "merge":D Ew. update coś tam.

somekind napisał(a):

No jeśli nie potrzebujesz wersjonowania, to nie potrzebujesz kontroli wersji. My nie wiemy, co Ty chcesz zrobić. ;)

Chciałem (już chyba nie chcę) nauczyć się GIT'a, ale mnie zniechęcił, bo nie działa tak jakbym chciał. W sumie nie wiem do czego to się używa, bo dla mnie to jest nieużywalne. Prościej zrobiłbym sobie katalog głowny, pracował na jakimś innym, a po jakeijś robocie skończonej na tym innym, robiłbym kolejnego "backa" głownego i nastepnie kopiował do niego to z innego. Dla jak na razie ten sposób działa, GIT nie:D

somekind napisał(a):

Śmieciowe katalogi w każdym podkatalogu, brak efektywnej możliwości ignorowania plików, nie potrafi samodzielnie wykryć przeniesienia/zmiany nazwy pliku tylko musi dublować funkcje systemu operacyjnego... Co to za praca?

Sorki, wiedziałem, że jak napisze, że GIT to badziewie, to ktoś na pewno odpisze. Za dużo widziałem bluzgów na użytkowników SVN na innych forach;-) W kadym bądź razie przechodząc test pozytywnie, udowodniłeś, że jesteś zupełnie normalnym i zdrowym użytkownikiem GIT'a. Nie jesteś reprezentantem patologi w społeczności GIT'a:D

0

Nie, nie. Mi chodzi o to, że mam np. repo w d:\test_repo i chcę do niego np. dodać folder w c:\jakies_badziewie. Tutaj mi ani merge nie działa, ani nic.

Ale dlaczego chcesz dodać do repozytorium folder, który jest poza repozytorium? Stwórz sobie po prostu drugie repozytorium, w c:\jakies_badziewie.

W SVN da się mieć katalogi spoza repozytorium w repozytorium bez ich przenoszenia na dysku?

0

@Ktos
W SVN z tego co pamiętam tworzyłem sobie working copy albo coś podobnego i przesyłałem pliki z repa, albo do repa. I mogłem tak zrobić wszędzie. W GIT nie.

0
arrowman napisał(a):

Właśnie to chce mieć. Chcę mieć repo z Windy na Ubuntu Server, które postawiłem na VirtualBox (nie próbujcie udostepniać katalogów windzie przy użyciu samby bez Guest Additions, stracice kilka dni życa:D).

No, ale to nie musi być zdalne repo, to może być repo lokalne we wspólnym dla wszystkich systemów katalogu. :)

Nie, nie. Mi chodzi o to, że mam np. repo w d:\test_repo i chcę do niego np. dodać folder w c:\jakies_badziewie. Tutaj mi ani merge nie działa, ani nic.

Ale w SVN też tak nie możesz mieć. Jeden katalog to jedno repozytorium.

No właśnie, a ja chcę żeby mi łączyło 2 repa lub branche (jeszcze nie potrafię skonfigurować). Ale nie robi tego, więc dla mnie nie działa i nie pwoinno się nazywac "merge":D Ew. update coś tam.

Merge służy do łączenia branchy, nie repozytoriów - tych się w ogóle nie łączy. Tak samo jest w SVN. Tyle, że w SVN masz opcję "merge two different tries", ale to wynika tylko z tego, że branche w SVN są fizycznie oddzielnymi katalogami.

Chciałem (już chyba nie chcę) nauczyć się GIT'a, ale mnie zniechęcił, bo nie działa tak jakbym chciał.

Bo nie jest SVNem? ;)

W sumie nie wiem do czego to się używa, bo dla mnie to jest nieużywalne.

Do wersjonowania kodu źródłowego. Z tego, co Ty piszesz wynika, że chyba nie do tego chcesz go użyć.

Prościej zrobiłbym sobie katalog głowny, pracował na jakimś innym, a po jakeijś robocie skończonej na tym innym, robiłbym kolejnego "backa" głownego i nastepnie kopiował do niego to z innego.

Po to wymyślono systemy kontroli wersji, żeby nie bawić się w kopiowanie katalogów. Edytujesz treść, robisz commit, edytujesz dalej, robisz następny commit. Gdy dochodzisz do wniosku, że coś zepsułeś, cofasz się do któregoś z poprzednich commitów. To akurat jest identyczne w SVN i Git.

Sorki, wiedziałem, że jak napisze, że GIT to badziewie, to ktoś na pewno odpisze. Za dużo widziałem bluzgów na użytkowników SVN na innych forach;-) W kadym bądź razie przechodząc test pozytywnie, udowodniłeś, że jesteś zupełnie normalnym i zdrowym użytkownikiem GIT'a. Nie jesteś reprezentantem patologi w społeczności GIT'a:D

Ja nie mam zamiaru bluzgać na masochistów. :P
Korzystam z SVN w pracy, prywatnie z Gita, i widzę ogromną przepaść w wygodzie pracy między tymi dwoma narzędziami. Ale zauważam też, że jak ktoś jest zbyt przyzwyczajony do pracy z SVN, to niesamowicie trudno mu uwierzyć, że można działać prościej. :)

1

SVN to przeżytek. Teraz nie wyobrażam sobie korzystać z innego systemu repo, niż Git, choć nie poznałem jeszcze jego wszystkich możliwości. Jeśli chodzi o system operacyjny, to Git jest niezależny od systemu. Możesz go mieć na czym chcesz plus dodatkowe repo na jakimś serwerze. Radzę Ci nauczyć obsługi Gita z konsoli. Wtedy można lepiej poznać i zrozumieć to narzędzie. Oczywiście przy jakichś diffach, rozwiązywaniu konfliktów i skomplikowanych mergach można się posiłkować dodatkowymi narzędziami typu TortoiseGit na Windowsa lub Source Tree, ale sporo rzeczy da się wygodnie zrobić z konsoli i wbrew pozorom szybciej, niż klikając po jakichś okienkach. Jeśli chodzi o naukę Gita, to pogooglaj pod hasłami "Pro Git book" i "Git flow". Zapytałeś o branche. Branche są głównie po to, żeby wielu developerów mogło pracować nad swoimi zadaniami na swojej "kopii" projektu, która jest pod branchem. W międzyczasie mogą sobie commitować zmiany lokalnie i pushować na repo na serwerze. Po skończeniu zadania można zmergować brancha z taskiem do master brancha. Wtedy nikt nie wchodzi sobie w drogę i można efektywnie rozwijać projekt. Czasem tworzy się też branche na feature i z niego branche na taski. Następnie merguje się taski to feature brancha, a feature brancha do mastera. Niektórzy w projektach mają też development branch i master branch, który pełni rolę brancha releasowego. Do tego dochodzą narzędzia webowe typu Gitlab i GitHub, które komunikują się z Gitem i można za ich pomocą robić merge requesty (pull requesty), a potem Code Review i mergować branche do mastera z poziomu panelu webowego. Praca w ten sposób z SVN-em jest niemożliwa. Git, to generalnie bardzo szeroki temat, a wszystkie poważne firmy IT używają Gita.

1 użytkowników online, w tym zalogowanych: 0, gości: 1