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:
- 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),
- 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),
- 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.
quelle
Antworten:
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.
quelle
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 ...
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.
Nur zur Klarstellung für andere (auch hier keine geschäftliche Zugehörigkeit zu GitHub oder BitBucket):
GitHub: Pläne & Preise
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.
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:
Verzweigung?
git-flow
)Ich bin mir nicht sicher, ob dies helfen wird, aber Sie könnten einen Blick darauf werfen:
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 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
main
Zweig 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?
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.
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).
---> Siehe meine kurze Antwort oben. ^^^^^^
quelle
Folgendes mache ich:
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.
quelle
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.
quelle
git worktree
Befehl 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.