Jeśli chodzi o hosting osobistych projektów wyrzucanych na zewnątrz, czy wyróżnia się jedna usługa i struktura projektu? [Zamknięte]

12

Patrzę na Google Code, SourceForge, BitBucket i GitHub, ponieważ wydają się być dużymi graczami. Nie podzieliłem jeszcze wszystkich funkcji, które one udostępniają, ale naprawdę szukam miejsca, w którym mogę napisać kod, który piszę (moje rozwiązania dla Project Euler, kod, który mógłbym napisać dla Code Golf / Programowanie łamigłówek Stack Stack itd.) W scentralizowanej lokalizacji.

Moje pierwsze pytanie brzmi: czy w takiej sytuacji jedna usługa wyróżnia się spośród innych?


Po wybraniu usługi muszę wybrać sposób dystrybucji kodu. Widzę kilka opcji konfigurowania repozytoriów i projektów. Jedno repozytorium może pomieścić dowolną liczbę projektów - na przykład mógłbym mieć repozytorium „Project Euler Toma Owensa” dla wszystkich moich różnych rozwiązań Project Euler, z projektami dla każdego języka i środowiska w katalogach w tym repozytorium, innym repozytorium dla moich różnych rozwiązań Code Kata i tak dalej. Albo mógłbym podzielić coś takiego na język (mieć rozwiązania Project Euler w Pythonie w jednym repozytorium, rozwiązania PE w Javie w innym repozytorium i rozwiązania Code Kata C ++ w trzecim repozytorium).

Moje drugie pytanie: Czy istnieją jakieś ograniczenia lub konwencje dotyczące określania sposobu udostępniania próbek kodu, które zdecydujesz się otworzyć, szczególnie jeśli chodzi o sposób tworzenia repozytoriów? Myślę, że może to być podyktowane przez wybraną przez ciebie usługę (w oparciu o konwencje społeczności).

Thomas Owens
źródło

Odpowiedzi:

10

Bitbucket.

Zapewniają doskonałą obsługę, prywatne repozytoria w darmowym pakiecie (oraz nieograniczoną liczbę publicznych) i dość szybko reagują na śledzenie problemów.

To samo, bez darmowych prywatnych repozytoriów, jest prawdziwe dla Github, ale bardzo nie lubię git. To osobiste preferencje, nie opowiadam się za gitem, jeśli z jakiegoś dziwnego powodu wolisz go od hg, to Github jest całkowicie poprawnym wyborem.

Jeśli chodzi o sposób organizowania repozytoriów, nie mieszaj języków, jeśli możesz tego uniknąć. Większość IDE opiera się na założeniu, że projekt jest oparty na jednym języku (z wyjątkiem projektów internetowych, w których oczekuje się kombinacji języka + html, css i js). Nie twierdzę, że IDE nie będzie w stanie sobie z tym poradzić, po prostu funkcje takie jak uzupełnianie kodu będą nieco wolniejsze, ponieważ IDE będzie musiało załadować dane dotyczące obsługi każdego języka.

Jeśli Twoje repo są publiczne (stąd nieograniczone), wybrałbym repo dla każdego języka według schematu projektu, tj. „Euler_cpp”, „euler_python” itp. To nie ma znaczenia, jaką usługę wybierzesz, jak zorganizujesz swoje repozytoria zależy wyłącznie od Ciebie.

Jeśli chodzi o strukturę folderów, dla rozwiązań euler projektu:

  • Folder na problem, jeśli planujesz mieć różne rozwiązania tego samego problemu
  • Plik na problem dla pojedynczych rozwiązań

Wybierz ten, który ma zastosowanie i trzymaj się go, jeśli dla jednego problemu masz więcej niż jedno rozwiązanie, wybierz pierwszą strukturę, nawet jeśli nie masz drugiego rozwiązania dla innego problemu.

aktualizacja:

Jeden plik na problem jest proponowany tylko wtedy, gdy jest rzeczywiście stosowany i jest sugerowany jako potencjalny schemat rozwiązań problemów projektu euler, ponieważ jest to jedyny projekt określony w pytaniu.

Zgodnie z komentarzem btilly dodam, że o lepszej / bardziej naturalnej strukturze należy decydować w zależności od języka, ponieważ każdy język i / lub platforma ma swoje własne konwencje i praktyki dotyczące plików i folderów.

Yannis
źródło
1
Struktura folderów powinna zależeć od języka. Osoba używająca języka skryptowego często pisze kod w jednym pliku, który w C / C ++ naturalnie zostałby napisany w kilku plikach w folderze.
btilly
@btilly Right.
Dodaję
Właściwie nie szukałem konkretnie, jak ułożyć pliki w projekcie, ale jak ułożyć szereg projektów w ramach używanej usługi.
Thomas Owens
@Thomas chodzi o Jak zorganizować repo ... . Tradycyjnie miałbyś jeden projekt na repozytorium. Szukasz szczegółowych instrukcji dotyczących każdej usługi?
yannis
To, czego szukam, to wszelkie konwencje, które istnieją w każdej społeczności, jeśli jest coś niezwykłego. Z moich doświadczeń wynika, że ​​takie rzeczy jak BitBucket, GitHub i SourceForge są bardziej społecznościami z normami i konwencjami niż zwykłymi usługami (chociaż niektórzy ludzie używają ich jak usług).
Thomas Owens
3

Zapomniałeś jednej opcji - hosting własnego repozytorium. Naprawdę był to jedyny sposób na lot do niedawna.

Gdybym musiał go dzisiaj użyć, wybrałbym bitbucket głównie dlatego, że pozwalają one na prywatne repo i skały rtęciowe.

Wyatt Barnett
źródło
Zrobiłem to z VisualSVN bez większego bólu.
Cody Sand
Zostałem tam zrobiony. Możesz osiągnąć jeszcze większą skuteczność dzięki urządzeniom turnkeylinux.org . .
Wyatt Barnett
3

Po użyciu Google Code, SourceForge i GitHub w różnych momentach, powiedziałbym, że GitHub jest znacznie lepszy niż pozostałe dwa:

  • Koncentruje się całkowicie na faktycznej pracy związanej z tworzeniem i udostępnianiem kodu.
  • Obsługa problemów jest domyślnie włączona i jest nie tylko łatwa w użyciu, ale również dobrze połączona z kodem i żądaniami ściągania.
  • Pomoc dla początkujących jest doskonała, na przykład instrukcje krok po kroku dotyczące rozpoczęcia pracy z repozytorium i obsługi żądań ściągania.
  • Nie jest przeznaczony do dystrybucji binarnej; jest to lepiej obsługiwane przez wyspecjalizowane witryny, takie jak PyPI.
  • Proste wiki zamiast konieczności tworzenia własnej strony internetowej od zera.
  • Doskonałe wsparcie dla kanałów - Jeden kanał dla wszystkiego, co mnie interesuje.
  • Nieformalna, a zatem czytelna komunikacja.
  • Bardzo aktywny rozwój nowych funkcji.
l0b0
źródło
Ponadto Github jest idealny do przechowywania takich rzeczy, jak rozwiązania Project Euler i fragmenty kodu do golfa za pomocą znaczników.
Matt Ellen
1

Moje osobiste projekty nie są bardzo duże (dużo tekstu, bez grafiki), więc mam repozytoria Mercurial z masterami w DropBox. Jest to szybki sposób na rozpoczęcie tworzenia kopii zapasowej (jeśli DropBox zniknie, nadal mam kopię repozytorium na każdym komputerze, który posiadam) i przenośność.

Zakładając, że mam projekt, który dochodzi do punktu, w którym chcę go rozpowszechnić, zawsze mogę przenieść go do Bitbucket, aby uzyskać lepszą widoczność. Nie obejmuje to kodu dla rozwiązań Euler Project.

David Thornley
źródło