Jak mogę zorganizować osobiste repozytoria Git?

20

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:

  1. 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),
  2. 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),
  3. 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)
Arkaaito
źródło
2
Ciekawi mnie, o ile repozytoriach tutaj mówimy. Co rozumiesz przez „wskaźniki”?
mhulse
ponieważ jest to stare pytanie, bitbucket pozwala tworzyć bezpłatne organizacje, w których możesz mieć projekty, które mogą mieć repozytoria. Organizacje są bezpłatne dla określonej liczby użytkowników. Możesz zarządzać uprawnieniami według organizacji / projektu / repozytorium.
ksenoterrakid
Pamiętaj, że GitHub oferuje teraz nieograniczone prywatne repozytoria z ich płatnymi planami.
Jack

Odpowiedzi:

11

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.

Andrew T Finnell
źródło
Prawda, prawda ... Prawdopodobnie nie powinienem był wywoływać GitHub, ponieważ jestem otwarty na używanie BitBucket do prywatnych projektów. Zmodyfikowałem nieco pytanie, aby było mniej szczegółowe.
Arkaaito,
5

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ź ...

Obecnie nie mam kopii zapasowej poza witryną dla większości mojego kodu, więc w ramach tego początkowo myślałem, że prześlę wszystkie moje osobiste projekty lub przynajmniej wszystkie moje projekty iOS do prywatnego repozytorium hostowanego przez 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).

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.

GitHub nie tylko pobiera opłaty z prywatnego repozytorium,

Aby wyjaśnić innym (ponownie, brak powiązania biznesowego z GitHub lub BitBucket):

GitHub: plany i ceny

  • 7 USD / mies. dla maksymalnie 5 prywatnych repozytoriów , nieograniczone wszystko inne.
  • 12 USD miesięcznie dla maksymalnie 10 prywatnych repozytoriów , nieograniczone wszystko inne.
  • 12 USD miesięcznie dla maksymalnie 20 prywatnych repozytoriów , nieograniczone wszystko inne.

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.

  • 5 użytkowników: bezpłatnie
  • 10 użytkowników: 10 USD / mies.
  • 25 użytkowników: 25 USD / mies.
  • 50 użytkowników: 50 USD / mies.
  • 100 użytkowników: 100 USD / mies.
  • Nieograniczone 200 USD / mies.

wydaje się, że nie ma żadnego sposobu hierarchicznego organizowania 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ą:

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?

Rozgałęziać się?

Czy GitHub (lub konkurent, taki jak BitBucket) ma jakieś funkcje organizacji projektu, których mi brakuje?

Nie jestem pewien, czy to pomoże, ale możesz rzucić okiem na:

Git jest wyposażony we wbudowane narzędzia GUI do zatwierdzania ( git-gui ) i przeglądania ( gitk ), ale istnieje kilka narzędzi innych firm dla użytkowników poszukujących doświadczenia specyficznego dla platformy.

... 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.

W przeciwnym razie, jaki jest ogólnie przyjęty „git sposób” radzenia sobie z tą sytuacją (odrzucanie projektów nieprzeznaczonych do wydania, przechowywanie ich offline, łączenie ich w jakikolwiek sposób itp.)?

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 mainoddziale, 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?

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),

Jeśli wybierzesz tę trasę, Dropbox (lub podobny) może być dobrym sposobem na uzyskanie kontroli formy i synchronizacji kopii zapasowej poza witryną.

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),

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ć).

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)

---> Zobacz moją krótką odpowiedź powyżej. ^^^^^^

mhulse
źródło
0

Oto co robię:

  • Umieść osobne projekty, które chcesz upublicznić, w osobnych repozytoriach GitHub . Ponieważ GitHub jest obecnie faktycznym miejscem do dzielenia się kodem, dzięki czemu Twoje projekty będą łatwiejsze do odkrycia / łatwiejsze do rozwidlenia.
  • W przypadku projektów, które chcesz zachować jako prywatne, umieść je w prywatnych repozytoriach obsługiwanych przez wybranego przez Ciebie dostawcę. Jak już wspomniano, Bitbucket jest dobrym wyborem, ponieważ pozwala na nieograniczone prywatne repozytorium.
  • 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.

bmaupin
źródło
0

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.

Peter Green
źródło
Przechowywanie ich w tym samym zdalnym repozytorium nie oznacza, że ​​musisz używać tego samego repozytorium lokalnego.
Peter Green
Po prostu zapomnij o moim ostatnim komentarzu. Właśnie dowiedziałem się o git worktreepoleceniu, 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 :-)
cmaster - przywróć monikę
@cmaster, gotowe ...
Peter Green