Sticht eine Dienstleistungs- und Projektstruktur beim Hosten Ihrer persönlichen Einwegprojekte heraus? [geschlossen]

12

Ich schaue auf Google Code, SourceForge, BitBucket und GitHub, da sie die großen Player zu sein scheinen. Jetzt habe ich noch nicht alle Funktionen, die sie bieten, aufgeschlüsselt, aber ich bin wirklich auf der Suche nach einem Ort, an dem ich verschiedenen Code einfügen kann (meine Lösungen für Project Euler, Code, den ich möglicherweise für den Code Golf schreibe). Programmieren von Puzzles (Stapelaustausch usw.) an einem zentralen Ort.

Meine erste Frage lautet also: Sticht in einer solchen Situation ein Dienst unter den anderen hervor?


Sobald ich einen Dienst ausgewählt habe, muss ich entscheiden, wie ich den Code verteilen möchte. Es gibt einige Optionen, die ich zum Einrichten der Repositorys und Projekte sehe. Ein einzelnes Repository kann eine beliebige Anzahl von Projekten enthalten. Beispielsweise könnte ich ein "Tom Owens Project Euler Solutions" -Repository für alle meine verschiedenen Lösungen für Project Euler haben, mit Projekten für jede Sprache und Umgebung in Verzeichnissen in diesem Repository, einem anderen Repository für meine verschiedenen Code Kata-Lösungen und so weiter. Oder ich könnte so etwas nach Sprache aufteilen (Project Euler-Lösungen in Python in einem Repository, PE-Lösungen in Java in einem anderen Repository und Code Kata C ++ -Lösungen in einem dritten Repository).

Meine zweite Frage: Gibt es Einschränkungen oder Konventionen bei der Festlegung, wie Sie Ihre Codebeispiele freigeben sollen, die Sie zum Öffnen auswählen, insbesondere im Hinblick auf die Erstellung Ihrer Repositorys? Mein Gedanke ist, dass dies durch den Dienst, den Sie auswählen (basierend auf den Konventionen der Community), diktiert werden könnte.

Thomas Owens
quelle

Antworten:

10

Bit Bucket.

Sie bieten einen exzellenten Service, private Repositories in ihrem kostenlosen Paket (plus unbegrenzte öffentliche) und sind in ihrem Issue-Tracker ziemlich reaktionsschnell.

Das Gleiche, abzüglich der kostenlosen privaten Repositories, gilt für Github, aber ich mag git immens nicht. Das ist eine persönliche Vorliebe, ich bin kein Verfechter von Git. Wenn Sie es aus irgendeinem seltsamen Grund bevorzugen, dann ist Github eine absolut gültige Wahl.

Mischen Sie keine Sprachen, um die Repos zu organisieren, wenn Sie dies vermeiden können. Die meisten IDEs basieren auf der Annahme, dass ein Projekt in einer einzigen Sprache erstellt wird (mit Ausnahme von Webprojekten, in denen eine Kombination aus Sprache + HTML, CSS und JS erwartet wird). Ich sage nicht, dass die IDE nicht in der Lage sein wird, damit umzugehen, nur dass Funktionen wie die Code-Vervollständigung etwas langsamer sind, da die IDE Daten zum Umgang mit jeder Sprache laden muss.

Wenn Ihre Repos öffentlich sind (daher unbegrenzt), würde ich ein Repo pro Sprache und Projektschema wählen, dh "euler_cpp", "euler_python" usw. Es spielt keine Rolle, welchen Dienst Sie auswählen und wie Sie Ihre Repos organisieren liegt ganz bei Ihnen.

Bezüglich der Ordnerstruktur für Projekt-Euler-Lösungen:

  • Ein Ordner pro Problem, wenn Sie unterschiedliche Lösungen für dasselbe Problem planen
  • Eine Datei pro Problem für einzelne Lösungen

Wählen Sie die zutreffende und bleiben Sie dabei. Wenn Sie für ein Problem mehr als eine Lösung haben, wählen Sie die erste Struktur, auch wenn Sie für kein anderes Problem eine zweite Lösung haben.

aktualisieren:

Die eine Datei pro Problem wird nur vorgeschlagen, wenn sie tatsächlich anwendbar ist, und sie wird als potenzielles Schema für Lösungen für Euler-Projektprobleme vorgeschlagen, da dies das einzige Projekt ist, das in der Frage angegeben wird.

Gemäß dem Kommentar von btilly füge ich hinzu, dass die bessere / natürlichere Struktur pro Sprache festgelegt werden sollte, da jede Sprache und / oder Plattform ihre eigenen Konventionen und Praktiken in Bezug auf Dateien und Ordner hat.

yannis
quelle
1
Die Ordnerstruktur sollte von der Sprache abhängen. Eine Person, die eine Skriptsprache verwendet, schreibt häufig Code in eine Datei, der in C / C ++ natürlich über mehrere Dateien in einem Ordner geschrieben wird.
1.
@btilly Richtig. Ich
füge
Eigentlich habe ich nicht speziell gesucht, wie man Dateien innerhalb eines Projekts anordnet, sondern wie man eine Reihe von Projekten innerhalb des verwendeten Dienstes anordnet.
Thomas Owens
@Thomas Was , wie die repos zu organisieren ... . Normalerweise haben Sie ein Projekt pro Repository. Suchen Sie spezifische Anweisungen für jeden Service?
Yannis
Was ich suche, sind irgendwelche Konventionen, die in jeder Gemeinschaft existieren, wenn es etwas Außergewöhnliches gibt. Nach meinen Erfahrungen handelt es sich bei Dingen wie BitBucket, GitHub und SourceForge eher um Communities mit Normen und Konventionen als nur um Services (obwohl manche Leute sie wie Services verwenden).
Thomas Owens
3

Sie haben eine Option vergessen - das Hosten Ihres eigenen Repositorys. Wirklich war der einzige Weg, bis vor kurzem zu fliegen.

Wenn ich heute einen verwenden müsste, würde ich mich hauptsächlich für Bitbucket entscheiden, weil sie private Repos und Quecksilbergesteine ​​zulassen.

Wyatt Barnett
quelle
Ich habe das mit VisualSVN ohne große Schmerzen gemacht.
Cody Sand
Kenne ich schon. Mit Geräten von turnkeylinux.org können Sie noch effektiver arbeiten . .
Wyatt Barnett
3

Nach der Verwendung von Google Code, SourceForge und GitHub zu verschiedenen Zeitpunkten würde ich sagen, dass GitHub viel besser ist als die beiden anderen:

  • Konzentriert sich vollständig auf die eigentliche Arbeit beim Erstellen und Freigeben von Code.
  • Die Problembehandlung ist standardmäßig aktiviert und nicht nur einfach zu bedienen, sondern auch mit Code- und Pull-Anforderungen verbunden.
  • Die Hilfe für Anfänger ist hervorragend, z. B. eine schrittweise Anleitung für den Einstieg in ein Repository und für die Verarbeitung von Pull-Anforderungen.
  • Nicht für die Binärdistribution gedacht. Dies wird besser von spezialisierten Sites wie PyPI gehandhabt.
  • Einfaches Wiki, anstatt Ihre eigene Webseite von Grund auf neu entwickeln zu müssen.
  • Exzellente Feed-Unterstützung - Ein einziger Feed für alles, was mich interessiert.
  • Informelle und damit lesbare Kommunikation.
  • Sehr aktive Entwicklung neuer Funktionen.
l0b0
quelle
Außerdem eignet sich Github perfekt zum Speichern von Project Euler-Lösungen und Code-Golf-Snippets mithilfe von Gists.
Matt Ellen
1

Meine persönlichen Projekte sind nicht sehr groß (viel Text, keine Grafiken), daher habe ich Mercurial-Repositorys mit den Mastern in DropBox. Dies ist ein schneller Einstieg in das Backup (wenn DropBox nicht mehr verfügbar ist, habe ich auf jedem Computer, den ich besitze, immer noch eine Kopie des Repository) und die Portabilität.

Angenommen, ich habe ein Projekt, das an den Punkt gelangt, an dem ich es verteilen möchte, kann ich es zur besseren Übersicht immer nach Bitbucket verschieben. Dies beinhaltet keinen Code für Euler Project-Lösungen.

David Thornley
quelle