Wie kann ich persönliche Git-Repositories organisieren?


20

Ich bin dabei, ein GitHub-Konto einzurichten, mit dem Plan, ein Paar Bibliotheken, die ich als Teil einiger neuerer iOS-Projekte entwickelt habe, für andere iOS-Entwickler frei verfügbar zu machen.

Ich habe derzeit keine Offsite-Sicherung für den größten Teil meines Codes, daher dachte ich ursprünglich, ich würde alle meine persönlichen Projekte oder zumindest alle meine iOS-Projekte in ein privates, von GitHub gehostetes Repository hochladen . Es sitzen jedoch viele Projekte herum, von denen viele von geringem Wert sind (dh aus Büchern adaptiert und für die Lernerfahrung geschrieben). GitHub wird nicht nur vom privaten Repository berechnet, es scheint auch keine Möglichkeit zu geben, Repositorys hierarchisch zu organisieren.

Fehlt mir etwas, mit dem ich ein Git-Repository mit einer Hierarchie verwenden und Teile nach Bedarf auschecken bzw. damit arbeiten kann, wie ich es derzeit mit SVN tue?

Verfügt GitHub (oder ein Mitbewerber wie BitBucket) über einige Funktionen zur Projektorganisation, die mir fehlen?

Wenn dies nicht der Fall ist, wie wird mit dieser Situation im Allgemeinen umgegangen (Projekte, die nicht für die Veröffentlichung vorgesehen sind, verwerfen, offline speichern, irgendwie bündeln usw. usw.)?

Soweit ich das beurteilen kann, habe ich folgende Möglichkeiten:

  1. Lege Bibliotheken auf GitHub, hoste weiterhin meinen eigenen SVN für alle anderen Projekte, verwende eine Nicht-VCS-Lösung für Off-Site-Backups (blech),
  2. Stellen Sie Bibliotheken und Software, die ich veröffentlichen möchte, auf GitHub (als öffentlich bzw. privat) und hosten Sie weiterhin meinen eigenen SVN für Projekte, die mir weniger wichtig sind. entscheide, dass ich bereit bin, sie abzuschreiben, wenn mein Haus implodiert (double blech),
  3. Stellen Sie alles auf [GitHub und / oder BitBucket] und umgehen Sie die lächerliche Anzahl von Repositorys, indem Sie in meinem Konto [GitHub und / oder BitBucket] nach dem suchen, was ich brauche.

2
Ich bin gespannt, über wie viele Repositories wir hier sprechen. Was meinst du mit "Zeigern"?
mhulse

da dies eine alte frage ist, können sie mit bitbucket freie organisationen erstellen, und in diesen können sie projekte haben, die repositories haben können. Organisationen sind bis zu einer bestimmten Anzahl von Benutzern frei. Sie können Berechtigungen nach org / project / repo verwalten.
Xenoterracide

Beachten Sie, dass GitHub jetzt unbegrenzte private Repositories mit ihren kostenpflichtigen Tarifen anbietet.
Jack

Antworten:


11

Mit bitbucket.org können Sie unbegrenzt private Repos erstellen.

Git lässt Sie nicht nur einige Code-Teile auschecken. Sie müssten also für jedes Projekt ein Repo erstellen oder alle Projekte klonen. In Wirklichkeit sehe ich kein Problem darin, alle unsere kleinen Projekte in einem einzigen Repo zusammenzufassen. Du klonst es einmal und bist fertig.

Mit Git müssen Sie den Code nie wieder "auschecken", es sei denn, Sie sprengen Ihr lokales Repo weg oder ziehen auf einen anderen Computer um. Sie synchronisieren einfach alle Ihre Änderungen.

Ich habe ein ähnliches Problem mit einer großen Anzahl von Repositorys. Der Grund, warum ich nicht alle in einem einzigen Repository speichern kann, ist, dass ich von jedem Repository verschiedene Versionen abzweigen muss. Es ist sehr schwer zu handhaben.


Richtig, richtig ... Ich hätte GitHub wahrscheinlich nicht speziell anrufen sollen, da ich offen bin, BitBucket für private Projekte zu verwenden. Die Frage wurde leicht bearbeitet, um sie weniger genau zu machen.
Arkaaito

5

Kurze Antwort ...

Mein Vorschlag: Beginnen Sie mit öffentlichen Konten auf GitHub und / oder Bitbucket (andere?). Eröffne ein paar öffentliche Projekte und benutze die Tools / Interfaces. Sobald Sie ein Gefühl für die Dienste haben, sollten Sie ein Gespür dafür haben, welche Einschränkungen, Vor- und Nachteile die einzelnen Dienste haben. Von dort aus sollten Sie in der Lage sein, den besten Weg zur Versionskontrollaufklärung zu wählen. :)


Lange Antwort ...

Ich habe zurzeit keine Offsite-Sicherung für den größten Teil meines Codes. Daher dachte ich ursprünglich, ich würde alle meine persönlichen Projekte oder zumindest alle meine iOS-Projekte in ein privates Repository hochladen, das von GitHub gehostet wird . Es sitzen jedoch viele Projekte herum, von denen viele von geringem Wert sind (dh aus Büchern adaptiert und für die Lernerfahrung geschrieben).

Haben Sie darüber nachgedacht, Ihren eigenen Git-Client zu installieren? Wenn Sie bereits für das Webhosting bezahlen, ist es möglicherweise sinnvoll, diesen Host für Ihr eigenes Git-Setup zu verwenden.

Zum Beispiel ist mein Host WebFaction (keine Zugehörigkeit):

Installieren der Git-Webanwendung

Wenn Sie diese Route ansteuern, können Sie möglicherweise etwas Geld sparen. wenn Sie bereits für das Hosting bezahlen.

GitHub wird nicht nur vom privaten Repository aufgeladen,

Nur zur Klarstellung für andere (auch hier keine geschäftliche Zugehörigkeit zu GitHub oder BitBucket):

GitHub: Pläne & Preise

  • $ 7 / Monat für bis zu 5 private Repositories , alles andere unbegrenzt.
  • 12 USD / Monat Für bis zu 10 private Repositories , alles andere unbegrenzt.
  • 12 USD / Monat Für bis zu 20 private Repositories , alles andere unbegrenzt.

Beachten Sie, dass die Preise für "Geschäftspläne" unterschiedlich sind.

Preise für Git und Mercurial Repo Hosting für Bitbucket von Atlassian

Wie in der anderen Antwort von Andrew angegeben, wirbt Bitbucket für unbegrenzte private Repos.

  • 5 Benutzer: Kostenlos
  • 10 Benutzer: $ 10 / Monat
  • 25 Benutzer: 25 USD / Monat
  • 50 Benutzer: 50 USD / Monat
  • 100 Benutzer: 100 USD / Monat
  • Unbegrenzt 200 USD / Monat

Es scheint keine Möglichkeit zu geben, Repositorys hierarchisch zu organisieren.

Ich weiß nicht genau, was Sie unter "hierarchisch" verstehen (wahrscheinlich, weil ich mit SVN nicht vertraut bin).

Ich bin mir nicht sicher, ob dies helfen würde, aber Sie könnten in dieser Vergleichstabelle nachsehen, wie sich die Befehle vergleichen / unterscheiden:

Fehlt mir etwas, mit dem ich ein Git-Repository mit einer Hierarchie verwenden und Teile nach Bedarf auschecken bzw. damit arbeiten kann, wie ich es derzeit mit SVN tue?

Verzweigung?

Verfügt GitHub (oder ein Mitbewerber wie BitBucket) über einige Funktionen zur Projektorganisation, die mir fehlen?

Ich bin mir nicht sicher, ob dies helfen wird, aber Sie könnten einen Blick darauf werfen:

Git wird mit integrierten GUI-Tools zum Festschreiben ( Git- GUI ) und Durchsuchen ( GitK ) geliefert. Es gibt jedoch mehrere Tools von Drittanbietern für Benutzer, die eine plattformspezifische Erfahrung suchen.

Ich bin mir nicht sicher, ob eines dieser Tools Ihnen dabei helfen kann, ein Gefühl für das Mögliche zu bekommen.

Um es klar auszudrücken, ich bin mir nicht sicher, ob Sie Git-Kenntnisse haben. Wenn Sie noch nicht mit Git / GitHub vertraut sind, ist die Verwendung einer GUI möglicherweise eine schnelle / einfache Möglichkeit, um ein Gefühl für die Dinge zu bekommen. Ich persönlich benutze gerne die offiziellen GitHub für Mac / Windows-Apps.

Wenn dies nicht der Fall ist, was ist die allgemein akzeptierte "git way", um mit dieser Situation umzugehen (Projekte, die nicht für die Veröffentlichung vorgesehen sind, verwerfen, offline speichern, sie irgendwie bündeln usw. usw.)?

Wenn ich Sie wäre, würde ich Repositories verwenden.

Wie viele private Repositories benötigen Sie?

Wenn Sie GitHub verwenden möchten, besteht eine Lösung darin, den günstigsten Plan zu erhalten und einige private Repos zu verwenden, um Ihren gesamten Test- / nicht öffentlichen Code zu speichern. Sie könnten einfach eine Ordnerstruktur in Ihrem mainZweig verwenden, um eine hierarchische Struktur beizubehalten, oder Sie könnten mehrere Zweige verwenden, um die Dinge getrennter zu halten.

Tipp: Wenn Sie eine neuere Version von Git verwenden, können Sie bestimmte Verzweigungen mithilfe der folgenden Methoden ziehen git clone -b mybranch --single-branch git://sub.domain.com/repo.git:

Ich muss Sie jedoch warnen, dass die Verwendung von Zweigen zum Organisieren von Code (wie Ordnern) nicht die beste Methode ist (es gibt jedoch nichts, was besagt, dass Sie diesen Weg nicht beschreiten können).

( Meine Antwort hier für verwandte Informationen in Bezug auf GitHub-Filialen. )

Auch hier denke ich, dass mehrere Repos der richtige Weg sind.

Sie könnten sich fragen, ob Ihr Code wirklich privat sein muss. ist es möglich, dass Sie mit besagtem Code ohne Auswirkungen an die Öffentlichkeit gehen könnten?

Lege Bibliotheken auf GitHub, hoste weiterhin meinen eigenen SVN für alle anderen Projekte, verwende eine Nicht-VCS-Lösung für Off-Site-Backups (blech),

Wenn Sie sich auf diesen Weg begeben , ist Dropbox (oder ein ähnliches Programm ) möglicherweise eine gute Möglichkeit, eine Form der Versionskontrolle und Synchronisierung für Ihre Offsite-Sicherung zu erhalten.

Stellen Sie Bibliotheken und Software, die ich veröffentlichen möchte, auf GitHub (als öffentlich bzw. privat) und hosten Sie weiterhin meinen eigenen SVN für Projekte, die mir weniger wichtig sind. entscheide, dass ich bereit bin, sie abzuschreiben, wenn mein Haus implodiert (double blech),

Dies bringt mich zurück zu der Frage "Zahlen Sie bereits für das Hosting? Wenn ja, könnten Sie Ihren eigenen Git-Host installieren"; Der Vorteil ist, dass Sie den gesamten Quellcode unter dem Dach von Git haben können, auch wenn sich nicht alle auf demselben Host befinden (dh verwenden Sie GitHub für die öffentlichen Inhalte, die Sie präsentieren möchten).

Stellen Sie alles auf [GitHub und / oder BitBucket] und umgehen Sie die lächerliche Anzahl von Repositorys, indem Sie in meinem Konto [GitHub und / oder BitBucket] nach dem suchen, was ich brauche.

---> Siehe meine kurze Antwort oben. ^^^^^^


0

Folgendes mache ich:

  • Stellen Sie eigenständige Projekte, die Sie veröffentlichen möchten, in separate GitHub- Repos. Da GitHub im Moment der De-facto-Ort ist, an dem Code geteilt werden kann, werden Ihre Projekte auffindbarer / einfacher aufzuteilen sein.
  • Legen Sie Projekte, die Sie privat halten möchten, in private Repos, die von einem Anbieter Ihrer Wahl gehostet werden. Wie bereits erwähnt, ist Bitbucket eine gute Wahl, da es unbegrenzte private Repos ermöglicht.
  • Legen Sie den gesamten anderen Code in ein "Junk" -Repo. Dies kann Code zum Lernen und Testen sowie kleine Snippets umfassen, die nicht wirklich Teil eines Projekts sind. Solange es keinen Grund gibt, dies privat zu halten, können Sie dieses Repo auch auf GitHub hosten.

    Zusätzlich zu allen üblichen Vorteilen der Versionskontrolle (die Sie bereits mit SVN haben), wird Ihr Code jetzt online gesichert. Für den Fall, dass aus einem Ihrer Junk-Codes ein Projekt wird, können Sie es einfach in ein eigenes Repo auslagern.

    Sie könnten diesen Code in separaten Repos ablegen oder etwas Besonderes wie Git-Submodule oder Teilbäume verwenden, aber ich finde, es ist am einfachsten, alles in einem Repo zu belassen und es mithilfe von Ordnern zu organisieren. Es ist viel einfacher und git ist schnell genug, dass die Größe des Repos kein Problem sein sollte.


0

Eine mögliche Technik wäre die Verwendung von Zweigen.

Zweige in einem Git-Repo sind nur Zeiger auf Commits, sie müssen in keiner Weise miteinander in Beziehung stehen. Sie können also ein "minorprojects" -Repo auf dem Hosting-Service erstellen und dann für jedes Projekt eine Verzweigung in diesem Repo verwenden. Wenn ein kleines Projekt wächst, können Sie den Zweig problemlos in ein eigenes Repo verschieben.

Lokal können Sie entweder die Zweige in separaten lokalen Repos halten (es muss kein 1: 1-Mapping zwischen lokalen und Remote-Repos geben) oder über ein einzelnes lokales Repo verfügen und den Git-Arbeitsbaum verwenden, um mehrere Arbeitsbäume zu verwalten. Ich persönlich vermute, dass der erste Ansatz weniger fehleranfällig ist.


Wenn sie in demselben Remote-Repo gespeichert sind, müssen Sie nicht dasselbe lokale Repo verwenden.
Peter Green

Vergiss einfach meinen letzten Kommentar. Ich habe gerade von dem git worktreeBefehl erfahren , mit dem Sie zusätzliche Arbeitsbäume für ein Repository erstellen können, sodass Sie mehrere Zweige gleichzeitig auschecken können. Damit verschwinden die Nachteile Ihres Ansatzes im Wesentlichen: Erstellen Sie einfach einen Arbeitsbaum für jeden unabhängigen Zweig und verwenden Sie sie wie unabhängige Repos.
Könnte

@cmaster, fertig ...
Peter Green
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.