Jestem w trakcie zakładania konta GitHub z planem stworzenia dwóch bibliotek, które opracowałem jako część niektórych ostatnich projektów iOS, dostępnych bezpłatnie dla innych deweloperów iOS.
Obecnie nie mam kopii zapasowej poza witryną dla większości mojego kodu, więc w ramach tego pierwotnie myślałem, że prześlę wszystkie moje osobiste projekty lub przynajmniej wszystkie moje projekty iOS do prywatnego repozytorium hostowanego na GitHub . Mam jednak wiele siedzących projektów, z których wiele ma dość niską wartość (tj. Adaptowanych z książek i napisanych do nauki). GitHub nie tylko pobiera opłaty z prywatnego repozytorium, ale wydaje się, że nie ma żadnego sposobu hierarchicznego organizowania repozytoriów.
Czy brakuje mi czegoś, co pozwoliłoby mi korzystać z repozytorium git z hierarchią i sprawdzać potrzebne elementy / pracować z nimi, tak jak obecnie to robię z SVN?
Czy GitHub (lub konkurent, taki jak BitBucket) ma jakieś funkcje organizacji projektu, których mi brakuje?
W przeciwnym razie, jaki jest ogólnie przyjęty „sposób Git” radzenia sobie z tą sytuacją (odrzucanie projektów nieprzeznaczonych do wydania, przechowywanie ich offline, łączenie ich w jakikolwiek sposób itp.)?
O ile wiem, moje opcje to:
- Umieść biblioteki na GitHub, kontynuuj hosting własnego SVN dla wszystkich innych projektów, użyj rozwiązania innego niż VCS do tworzenia kopii zapasowych poza witryną (blech),
- Umieść biblioteki i oprogramowanie, które planuję wydać na GitHub (odpowiednio jako publiczny i prywatny), nadal hostuj swój własny SVN dla projektów, na których nie dbam tak bardzo i prawdopodobnie tylko wrócę, aby odświeżyć pamięć o tym, jak zaimplementować XYZ, zdecyduję, że jestem gotów odpisać je, jeśli mój dom imploduje (podwójny blech),
- Umieść wszystko na [GitHub i / lub BitBucket], zajmuj się posiadaniem absurdalnej liczby repozytoriów, szukając tego, czego potrzebuję / utrzymuję jakiś zestaw wskaźników offline na moim koncie [GitHub i / lub BitBucket] (triple blech)
źródło
Odpowiedzi:
bitbucket.org pozwala tworzyć nieograniczone prywatne repozytorium.
Git nie pozwala ci sprawdzić tylko niektórych fragmentów kodu. Musisz więc utworzyć repozytorium dla każdego projektu lub zająć się klonowaniem wszystkich projektów. W rzeczywistości nie widzę problemu z umieszczeniem wszystkich naszych małych projektów w jednym repozytorium. Klonujesz go raz i gotowe.
Dzięki Git nie musisz już nigdy „kasować” kodu, chyba że zdmuchniesz lokalne repozytorium lub przejdziesz na inną maszynę. Po prostu zsynchronizujesz wszystkie zmiany.
Mam podobny problem z dużą liczbą repozytoriów. Nie mogę przechowywać ich wszystkich w jednym repozytorium, dlatego muszę rozgałęziać różne wersje z każdego repozytorium. Jest bardzo trudny do zarządzania.
źródło
Krótka odpowiedź ...
Moja sugestia: zacznij od kont publicznych na GitHub i / lub Bitbucket (inne?). Rzuć kilka publicznych projektów i zacznij korzystać z narzędzi / interfejsów. Po zapoznaniu się z usługami powinieneś wiedzieć, jakie są ograniczenia, zalety i wady każdej usługi. Stamtąd powinieneś być w stanie wybrać najlepszą ścieżkę do oświecenia kontroli wersji. :)
Długa odpowiedź ...
Czy zastanawiałeś się nad zainstalowaniem własnego klienta Git? Jeśli już płacisz za hosting, warto użyć tego hosta do własnej konfiguracji Git.
Na przykład moim hostem jest WebFaction (bez powiązania):
Instalowanie aplikacji internetowej Git
Kierując się tą trasą, możesz zaoszczędzić trochę $$$, szczególnie. jeśli już płacisz za hosting.
Aby wyjaśnić innym (ponownie, brak powiązania biznesowego z GitHub lub BitBucket):
GitHub: plany i ceny
Pamiętaj, że ceny „Biznesplanów” są różne.
Ceny hostingu repozytoriów Git i Mercurial dla Bitbucket przez Atlassian
Jak stwierdził Andrew w innej odpowiedzi, Bitbucket reklamuje nieograniczoną liczbę prywatnych repozytoriów.
Nie jestem pewien, co dokładnie rozumiesz przez „hierarchicznie” (prawdopodobnie dlatego, że nie znam SVN).
Nie jestem pewien, czy to pomogłoby, ale możesz spojrzeć na tę tabelę porównawczą, aby zobaczyć, jak polecenia się różnią / różnią:
Rozgałęziać się?
git-flow
)Nie jestem pewien, czy to pomoże, ale możesz rzucić okiem na:
... jeszcze raz, nie jestem pewien, czy którekolwiek z tych narzędzi pomogłyby Ci zrozumieć, co jest możliwe.
Żeby było jasne, nie jestem pewien twojego poziomu umiejętności Git ... jeśli dopiero zaczynasz przygodę z Git / GitHub, używanie GUI może być szybkim / łatwym sposobem na sprawdzenie rzeczy. Osobiście lubię korzystać z oficjalnych aplikacji GitHub na komputery Mac / Windows.
Gdybym był tobą, korzystałbym z repozytoriów.
Ile prywatnych repozytoriów potrzebujesz?
Jeśli chcesz korzystać z GitHub, jednym z rozwiązań może być uzyskanie najtańszego planu i wykorzystanie kilku prywatnych repozytoriów do przechowywania całego kodu testowego / niepublicznego. Możesz po prostu użyć struktury folderów w swoim
main
oddziale, aby utrzymać strukturę hierarchiczną, lub możesz użyć wielu gałęzi, aby zachować więcej osobności.Wskazówka: jeśli używasz nowszej wersji Git, możesz pobrać określone gałęzie, używając
git clone -b mybranch --single-branch git://sub.domain.com/repo.git
:Muszę cię jednak ostrzec, że używanie gałęzi do organizowania kodu (np. Folderów) nie jest tak naprawdę najlepszym sposobem na robienie różnych rzeczy (chociaż nic nie mówi, że nie możesz podążać tą drogą).
( Wydaje się, że moja odpowiedź tutaj na powiązane informacje dotyczące oddziałów GitHub. )
Ponownie myślę, że wiele repozytoriów jest dobrym rozwiązaniem.
Możesz zadać sobie pytanie, czy Twój kod naprawdę musi być prywatny; czy to możliwe, że możesz upublicznić ten kod bez żadnych konsekwencji?
Jeśli wybierzesz tę trasę, Dropbox (lub podobny) może być dobrym sposobem na uzyskanie kontroli formy i synchronizacji kopii zapasowej poza witryną.
To prowadzi mnie z powrotem do pytania „Czy już płacisz za hosting? Jeśli tak, możesz zainstalować własnego hosta Git”; zaletą jest to, że możesz mieć cały kod źródłowy pod parasolem Git, nawet jeśli nie wszystkie są na tym samym hoście (tj. użyj GitHub do publicznych rzeczy, które chcesz pokazać).
---> Zobacz moją krótką odpowiedź powyżej. ^^^^^^
źródło
Oto co robię:
Umieść cały inny kod w repozytorium „śmieci”. Może to obejmować kod używany do uczenia się i testowania, a także małe fragmenty, które tak naprawdę nie są częścią projektu. Tak długo, jak nie ma powodu, aby zachować tę prywatność, możesz hostować to repozytorium również na GitHub.
Oprócz wszystkich zwykłych zalet kontroli wersji (które już masz w SVN), teraz twoja kopia zapasowa kodu jest tworzona online. W przypadku, gdy któryś ze swoich niepotrzebnych kodów zmieni się w projekt, możesz po prostu przekształcić go we własne repozytorium.
Możesz umieścić ten kod w osobnych repozytoriach lub użyć czegoś wymyślnego, takiego jak podmoduły lub poddrzewa git, ale uważam, że najłatwiej jest po prostu przechowywać wszystko w jednym repozytorium i organizować je za pomocą folderów. Jest o wiele prostszy, a git jest wystarczająco szybki, aby rozmiar repo nie stanowił problemu.
źródło
Jedną z możliwych technik byłoby użycie gałęzi.
Gałęzie w repozytorium git są tylko wskaźnikami do zatwierdzeń, nie muszą być w żaden sposób ze sobą powiązane. Możesz więc utworzyć repozytorium „drobnych projektów” w usłudze hostingowej, a następnie użyć oddziału w tym repozytorium dla każdego projektu. Jeśli powstanie niewielki projekt, możesz łatwo przenieść oddział do własnego repozytorium.
Lokalnie możesz albo utrzymywać gałęzie w osobnych repozytoriach lokalnych (nie musi być mapowania 1: 1 między repozytoriami lokalnymi i zdalnymi) lub mieć jedno repozytorium lokalne i użyć git worktree do utrzymania wielu działających drzew. Osobiście podejrzewam, że pierwsze podejście jest mniej podatne na błędy.
źródło
git worktree
poleceniu, które pozwala tworzyć dodatkowe drzewa robocze dla repozytorium, umożliwiając jednoczesne sprawdzenie kilku gałęzi. Dzięki temu wady twojego podejścia w zasadzie znikają: po prostu utwórz drzewo robocze dla każdej niezależnej gałęzi i używaj ich jak niezależnych repozytoriów. Może to być dobry pomysł, aby dodać to do swojej odpowiedzi :-)