2009-09-12 7 views
19

Come organizzi il tuo spazio di lavoro personale per i tuoi progetti di codice nella tua cartella Inizio? E come mantenere l'area di lavoro efficiente per la gestione di più progetti contemporaneamente?Come organizzi lo spazio di lavoro del codice e la cartella Inizio?


L'aspetto più importante della mia domanda è sopra. È possibile interrompere la lettura a meno che non si vogliano affrontare specifiche sottoparti dell'argomento. Di seguito sono riportate varie domande correlate sull'organizzazione degli spazi di lavoro. Non c'è bisogno di affrontarli tutti. Interessato ad ascoltare anche le risposte parziali ad alcune delle seguenti domande correlate.

Questa domanda è per lo più nel contesto di utenti in base UNIX e OS X. Windows possono offrire suggerimenti, ma sono per lo più interessati nelle convenzioni cartella casa e della riga di comando di solito si trovano in UNIX non Windows (a meno che non si usa Cygwin).

In particolare, quale tipo di struttura di cartelle è utile quando si gestiscono più progetti di codice contemporaneamente? E quando stai scaricando una varietà di progetti di codice open source come mantenere tutti i vari alberi di origine organizzati senza ingombrare troppo il tuo spazio di lavoro?

In particolare mi chiedo quali trucchi o suggerimenti potrebbero avere per rendere i progetti di facile accesso tramite la riga di comando e facili da consultare mentre ci si allontana quando è necessario concentrarsi su un progetto specifico.

Esistono utili convenzioni utili per mantenere ordinati i vari repository di origine? In particolare con git come si mantengono organizzati i diversi rami e repository correlati? Ti capita spesso di scartare le copie di lavoro e di aggiornarle regolarmente dal controllo del codice sorgente? Cosa tieni in giro e perché? E come gestisci spazi dei nomi e percorsi se un particolare progetto ha molte dipendenze del percorso che devi mappare alla struttura della tua cartella home?

E le cartelle bin e le librerie comuni? Come gestirlo se è necessario creare molti potenziali ambienti di sviluppo per vari progetti (magari versioni diverse di PHP, Ruby, Perl, server Web, compilatori, ecc.).

Per il sys stagionato ammette cosa funziona per esperienza e cosa no?

Come si mantiene il più semplice possibile, ma non troppo semplice?

E quale offre la massima flessibilità per lavorare su più progetti contemporaneamente?

Sposta regolarmente i progetti fuori dal tuo spazio di lavoro e reimporta dal controllo del codice sorgente. Come evitare l'accumulo di cruft riducendo al tempo stesso la necessità di ricreare ambienti di progetto troppo spesso?

Come ripulire o spazzare via l'intero spazio di lavoro in modo da poter iniziare con una lavagna vuota, senza perdere l'accesso al codice sorgente e alle efficienze organizzative ottenute dai progetti precedenti?

+1

Quasi ogni frase che hai scritto termina con un punto interrogativo. Ti suggerirei di condensare il tuo post in una sola domanda trattabile :) –

+2

Questo post potrebbe essere un buon candidato per la wiki della comunità. – Amber

+0

la domanda nella chat era "hai mai usato git" e la risposta era no, quindi, se come me, hai pensato "soffiare via il tuo repository? Pulire l'albero delle costruzioni?" allora è per questo. Pensavo solo che avrei chiarito per lui. – jcolebrand

risposta

12

Conservo il software che ho scritto io stesso in una directory speciale, dal nome del mio sito Web principale - chiamiamolo "juggle" per il gusto dell'argomento. Avrei ~/juggle/software/all'interno del quale è una sottodirectory per ogni progetto che scrivo (solitamente gestito con git) e ~/juggle/websites/sotto il quale ho una sottodirectory per ogni dominio del sito web, sia raw che HTML o qualcosa del genere come webgen o staticmatic.

Per aiutarmi a saltare tra di loro, io uso 'apparix' che lega in modo abbastanza piacevole.

$ cd ~/juggle/software/wolfsbaen 
$ bm # bookmarks this with apparix 

Così ora da qualsiasi luogo io possa fare questo

$ to wolfsbaen 

Per il software che ho scaricato, ho ~/software/e dentro che:

  • archivi - per essere sempre scaricato source tarballs
  • documentazione - per documenti HTML e libri PDF scaricati
  • mod - f o progetti usa e getta per cercare idee o librerie software nuovo
  • progetti - per i progetti che collaborare, ma non è stato avviato me
  • semplice - per i programmi bash/Python/rubino, che possono essere eseguiti all'interno delle loro directory decompressi
  • sovversioni - per tutte le estrazioni di revisione di controllo: cvs, svn, git, ecc hg
  • spacchettato - per tarball non imballati prima di compilarli

ho anche ~/bin per gli script utili che scrivo e mi ritrovo con tutto il tempo. Lo aggiungo al PERCORSO in ~/.bashrc

Non penso che il resto delle tue domande si applichi davvero così bene a me; tranne che con git, praticamente non devo mai forzare nessuno dei miei spazi di lavoro.Creo nuovi rami mentre sono nella directory di lavoro e memorizzo le ultime modifiche se devo cambiare improvvisamente ramo. Io mantengo anche un archivio clone nuda del tutto il mio software e siti Web propria fonte:

$ git clone --bare . /srv/git/wolfsbaen.git 

I 'git push' per questo alla fine di ogni fase di lavorazione. Ciò rende/srv/git una scelta ovvia per il backup.

+0

Grazie Cathal. Sto scavando git. E il tuo flusso di lavoro qui ha molto senso per me. E grazie per il consiglio "apparix". Mi stavo chiedendo come fare i segnalibri nella riga di comando. Questo risponde a una domanda che intendevo chiedere ai miei amici admin del sistema. –

+0

Cathal, ho avuto problemi con la configurazione di Apparix su OS X. Google mi ha portato alla tua risposta. Ti dispiacerebbe scrivere una guida rapida? –

3

Non ho intenzione di rispondere a tutte le vostre domande; Tuttavia, dirò che uso SVN e seguo le loro convenzioni per i progetti. Quindi ho una cartella chiamata:

d:\development 

E al suo interno, tutti i miei progetti sono come sottocartelle (forse 20 o giù di lì). In ognuna di esse, è

\trunk 
\branches 
\tags 

E questo è tutto.Ho una seconda macchina qui a casa è il mio server (e anche media center: P), e su di esso ho SVN in esecuzione sotto apache, e anche trac, per gestire le attività e bug in ciascuno. Inoltre ho CC.net, per le build.

3

Come si fa a organizzare il vostro spazio di lavoro personale per i vostri progetti di codice in vostra cartella home?

Per quanto riguarda UNIXy, posiziono le cartelle di progetto sotto ~/dev. Di solito finirò per controllare qualcosa da Subversion in quelle cartelle del progetto.

E quello che ti dà la flessibilità più di lavorare su più progetti contemporaneamente ?

Per i progetti Web, mantenere un set di Apache name-based virtual hosts è estremamente utile per lavorare su più progetti contemporaneamente. http://foo.localhost/ può puntare a ~/dev/foo/public, http://bar.localhost/ -> ~/dev/bar/pubblico e così via.

GNU Screen è anche la chiave per il mio flusso di lavoro di sviluppo locale. Se ho bisogno di cambiare marcia ad un altro progetto, mi limiterò a premere Ctrl-a, c e ad usare un nuovo terminale isolato.

+0

Utilizzo MAMP principalmente su OS X. Ma il tuo suggerimento sul nome di host virtuali ha molto senso. –

1

Vorrei condividere la mia esperienza nel sistema di organizzazione (anche se domanda è troppo vecchio, spero che questo potrebbe aiutare qualcuno o potrei ottenere suggerimenti migliori)

continuo a cambiare distro linux ed a volte utilizzare Windows per lavoro. Quindi ho partizionato l'HDD in 4 dischi.

  1. finestre
  2. linux
  3. principale
  4. più uno


Tutto il mio lavoro va in terza unità che è NTFS, in modo che possa essere letta in entrambi Windows così come Linux. (Potrebbe essere necessario un po 'di configurazione fstab per non rovinare le autorizzazioni dei file quando si monta questa unità in linux). Ora in questa unità, ho messo le seguenti cartelle.

  • Documenti
    • tutti i documenti ho conservato (per esempiolibri, libri bianchi ecc)
  • Immagini
  • Musica
    • canzoni
    • playlist (attualmente utilizzando banshee)
  • Film
  • lavoro
    • offic e
      • progetto studio 1
      • progetto ufficio 2
    • personali
      • pubblici (per lo più i progetti che ho pubblicato su GitHub)
        • progetto personale 1
        • progetto personale 2
      • privato
        • progetto personale 3
        • progetto personale 4
    • risorse
      • principalmente repos scaricate da github o di qualsiasi altro codice sorgente o roba relativi
  • Gratta
    • Fondamentalmente tutto va qui in primo luogo nel caso in cui non so dove mettere o io sono in fretta. Più tardi li ho risolti secondo necessità
    • Inoltre, ho impostato i collegamenti software in questa directory a varie altre directory a cui accedo spesso. La ragione di questo è, ho impostato la cartella scratch come Desktop
  • Dump
    • Le cose che ho già affrontato, ma hav per mantenere intorno per qualche tempo quindi rimuovere
    • continuo a pulire questa cartella nel tempo libero
  • Dropbox
    • Poche cose che accedo da multi i dispositivi ple vengono memorizzati in una casella personale. Ma a causa dei problemi relativi alla privacy di Dropbox, non sono in grado di memorizzare tutto ciò che contiene. E sto ancora cercando una soluzione ideale per questo. Ho provato a eseguire le alternative opensbox dropbox sui miei server ma mantenendoli in hassel.(Anche se provengo da uno dei paesi del terzo mondo, devo andare fuori dalla rete molte volte)
    • Attualmente sto lanciando una semplice web app per archiviare cose come citazioni/libri che mi piacciono. Inoltre prendo molte note quando lavoro. Per ora li sto salvando in dropbox, ma presto li sposterò sulla mia app.

Quando installo nuovo sistema operativo, prima posso cambiare cartelle predefinite e le posizioni segnalibri come desktop, musica, documenti ecc per le cartelle di unità principali e configurazione set. Ho impostato la cartella scratch come desktop
Per i file di configurazione (editor/shell, ecc.), È possibile utilizzare l'unità principale/dropbox/dotfile.
Anche sulla nota a margine, io uso zsh/vim/emacs con alcuni plugin interessanti per rendermi più produttivo.

Problemi correlati