Quando si tratta di ospitare i tuoi progetti personali a scomparsa, si distingue un servizio e una struttura di progetto? [chiuso]


12

Sto guardando Google Code, SourceForge, BitBucket e GitHub, dal momento che sembrano essere i grandi giocatori. Ora, non ho ancora suddiviso tutte le funzionalità che forniscono ancora, ma sto davvero cercando un posto dove inserire vari codici che scrivo (le mie soluzioni per Project Euler, codice che potrei scrivere per il Code Golf / Puzzle di programmazione Stack Stack, e così via) in una posizione centralizzata.

Quindi, la mia prima domanda è: per una situazione come questa, un servizio si distingue dagli altri?


Dopo aver scelto un servizio, devo scegliere come distribuire il codice. Ci sono alcune opzioni che vedo per impostare i repository e i progetti. Un singolo repository può contenere un numero qualsiasi di progetti - ad esempio, potrei avere un repository "Tom Owens's Project Euler Solutions" per tutte le mie varie soluzioni a Project Euler, con progetti per ogni lingua e ambiente nelle directory all'interno di questo repository, un altro repository per le mie varie soluzioni di Code Kata e così via. Oppure potrei suddividere qualcosa del genere in base al linguaggio (avere soluzioni Project Euler in Python in un repository, soluzioni PE in Java in un altro repository e soluzioni Code Kata C ++ in un terzo repository).

La mia seconda domanda: esistono delle limitazioni o convenzioni per determinare come condividere gli esempi di codice che si sceglie di rendere aperti, soprattutto in termini di come si creano i repository? Il mio pensiero è che questo potrebbe essere dettato dal servizio scelto (basato sulle convenzioni della comunità).

Risposte:


10

Bitbucket.

Forniscono un servizio eccellente, repository privati ​​nel loro pacchetto gratuito (oltre a un pubblico illimitato) e sono abbastanza reattivi nel loro tracker dei problemi.

Lo stesso, meno i repository privati ​​gratuiti, è vero per Github, ma non mi piace immensamente git. Questa è una preferenza personale, non sto sostenendo contro git, se per qualche strano motivo lo preferisci a hg, allora Github è una scelta perfettamente valida.

Per quanto riguarda come organizzare i repository, non mescolare le lingue se puoi evitarlo. La maggior parte degli IDE si basa sul presupposto che un progetto sia basato su una sola lingua (ad eccezione dei progetti Web in cui è prevista una combinazione di lingua + html, css & js). Non sto dicendo che l'IDE non sarà in grado di far fronte, solo che funzionalità come il completamento del codice saranno un po 'più lente poiché l'IDE dovrà caricare i dati su come gestire ogni lingua.

Se i tuoi repository sono pubblici (quindi illimitati), sceglierei un repository per lingua per schema di progetto, ad esempio "euler_cpp", "euler_python", ecc. Non importa quale servizio scegli, come organizzare i tuoi repository dipende completamente da te.

Per quanto riguarda la struttura delle cartelle, per le soluzioni di euler del progetto:

  • Una cartella per problema, se si prevede di avere soluzioni diverse allo stesso problema
  • Un file per problema, per singole soluzioni

Scegli quello che si applica e attenersi ad esso, se per un problema hai più di una soluzione, scegli la prima struttura anche se non hai una seconda soluzione per qualsiasi altro problema.

aggiornare:

L'unico file per problema è proposto solo quando è effettivamente applicabile ed è suggerito come un potenziale schema per soluzioni per proiettare problemi di eulero, poiché questo è l'unico progetto specificato nella domanda.

Come da commento di Btilly, sto aggiungendo che la struttura migliore / più naturale dovrebbe essere decisa per lingua, poiché ogni lingua e / o piattaforma ha le sue convenzioni e pratiche relative a file e cartelle.


1
La struttura delle cartelle dovrebbe dipendere dalla lingua. Una persona che utilizza un linguaggio di scripting scrive spesso codice in un file che in C / C ++ verrebbe naturalmente scritto su più file in una cartella.
btilly

@btilly Right. Sto aggiungendo il tuo commento alla risposta ...
yannis,

In realtà non stavo cercando specificamente come disporre i file all'interno di un progetto, ma come disporre una serie di progetti all'interno del servizio utilizzato.
Thomas Owens

@Thomas Quanto a come organizzare i pronti contro termine ... . Tradizionalmente si avrebbe un progetto per repository. Stai cercando istruzioni specifiche su ciascun servizio?
yannis,

Quello che sto cercando sono le convenzioni che esistono all'interno di ogni comunità, se c'è qualcosa di straordinario. Nelle mie esperienze, cose come BitBucket, GitHub e SourceForge sono più delle comunità con norme e convenzioni che semplici servizi (anche se alcune persone li usano come servizi).
Thomas Owens

3

Hai dimenticato un'opzione: ospitare il tuo repository. Era davvero l'unico modo per volare fino a poco tempo fa.

Se dovessi usarne uno oggi, sceglierei bitbucket principalmente perché consentono repository privati ​​e rocce mercuriali.


L'ho fatto con VisualSVN senza molto dolore.
Cody Sand,

Ci sono stato fatto. Puoi essere ancora più efficace con le appliance turnkeylinux.org . .
Wyatt Barnett,

3

Dopo aver utilizzato Google Code, SourceForge e GitHub in diversi punti nel tempo, direi che GitHub è molto meglio degli altri due:

  • Si concentra completamente sul lavoro effettivo di creazione e condivisione del codice.
  • La gestione dei problemi è abilitata per impostazione predefinita e non è solo semplice da usare, ma ben collegata sia con richieste di codice che pull.
  • La guida per principianti è eccellente, ad esempio istruzioni dettagliate per iniziare con un repository e per gestire le richieste pull.
  • Non destinato alla distribuzione binaria; questo è gestito meglio da siti specializzati come PyPI.
  • Wiki semplice invece di dover sviluppare la tua pagina web da zero.
  • Eccellente supporto per i feed: un feed singolo per tutto ciò che mi interessa.
  • Comunicazione informale e quindi leggibile.
  • Sviluppo molto attivo di nuove funzionalità.

Inoltre, Github è perfetto per archiviare oggetti come soluzioni Project Euler e codificare frammenti di golf attraverso l'uso di elementi.
Matt Ellen,

1

I miei progetti personali non sono molto grandi (molti testi, nessuna grafica), quindi ho repository Mercurial con i master in DropBox. È un modo rapido per iniziare con il backup (se DropBox scompare, ho ancora una copia del repository su ogni computer che possiedo) e la portabilità.

Supponendo che ho un progetto che arriva al punto in cui voglio distribuirlo, posso sempre spostarlo su Bitbucket per una maggiore visibilità. Questo non include il codice per le soluzioni Euler Project.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.