2010-12-28 15 views
11

Sto lavorando su un piccolo progetto, ospitato su Google Code, utilizzando SVN per il controllo del codice sorgente. Questa è la mia prima volta che utilizzo il controllo del codice sorgente e sono un po 'confuso su cosa dovrei effettivamente commettere nel repository. Il mio progetto è molto semplice: un progetto di libreria di classi, scritto in C#. Il codice effettivo che ho scritto è un singolo file.Quando si utilizza il controllo del codice sorgente, quali file devono essere effettivamente impegnati?

La mia domanda è questa: Devo impegnare l'intero progetto (comprese le directory come Debug, Release, Proprietà, ecc.) O solo il mio file .cs principale?


Dopo aver combattuto con Subversion per un po '(Nota a sé: fare non repository di reset), sembra che finalmente ho farlo funzionare con le directory disposte correttamente.

+3

Il debug e il rilascio contengono file di output, non file di origine, quindi non devono essere impegnati. La directory Properties contiene il codice sorgente (AssemblyInfo.cs). Se segui la risposta di Andrew, starai bene. Volevo solo chiamarli esplicitamente, visto che li hai citati. –

+1

@Merlyn: Grazie per il suggerimento! –

+0

Beh, in realtà ... Ecco un trucco che ho fatto in passato. Copio solo i file che ritengo necessario avere sicuramente in un'altra directory. Inizia con i file csproj e sln e quei file che vedi in Solution Explorer (assicurati di eseguire il drill down fino in fondo). Quindi apri quella copia della soluzione in VS. Se viene compilato correttamente (nessun errore e tutti i file di output sono uguali), questi erano i file necessari. Assicurati di a) annotare i file che hai copiato, o b) fare * due * copie, una delle quali usate per testare la tua build pulita, l'altra che non tocchi e, infine, effettuare il check-in –

risposta

12

Si dovrebbe impegnare tutto tranne i file di output.

Ciò significa che commuta tutto tranne le directory e \obj (e i file in esse contenuti).

+1

Se imposto il mio 'trunk' con una cartella' src', tutto questo dovrebbe andare lì? –

+2

Sì, dovrebbe. La cosa migliore da fare è controllare alcuni progetti C# open source e vedere come strutturano i loro progetti e quali file registrano. In caso di dubbio è meglio imitare qualcuno che rispetti. –

+2

e circa .suo e .user non sono utilizzabili nel controllo sorgente – ScottS

3

Sicuramente non si desidera eseguire il commit delle librerie predefinite, no. Il controllo del codice sorgente è in realtà solo per la fonte. Ora, in qualcosa di simile a una configurazione di progetto .NET, puoi anche considerare i file di progetto e i file di soluzione come sorgente, va bene. (Ma non i file .user o .suo, lasciali fuori.) Ma una squadra che condivide i binari compilati si imbatterà in mal di testa. I binari in generale vanno bene, come ad esempio le DLL referenziate. Non solo i binari costruiti dal codice.

Fondamentalmente, commettere tutto ciò che è necessario (e solo ciò che è necessario, almeno nell'ambito della gerarchia di codice del progetto) per creare una versione completa del progetto. Ma non commettere l'output generato reale.

+0

'Non solo i bari costruiti dal codice.: Questi file dovrebbero essere messi in' trunk/build'? –

+1

@SimpleCoder: In una cartella come '/ build /' mi aspetterei intuitivamente di trovare degli script per costruire (magari anche distribuendo) il progetto, come i file NAnt o Rake (che sono, loro stessi, sorgente). Forse anche altre cose che supportano la build. Ma la gerarchia di controllo del codice sorgente in generale non dovrebbe avere l'output di generazione del progetto da nessuna parte. Ciò che uno sviluppatore ottiene dal controllo del codice sorgente è ciò di cui hanno bisogno per costruire il progetto, non l'output costruito. – David

+0

Ok, questo ha senso. Grazie per avermelo chiarito. –

9

Per lo sviluppo normale non mi impegno:

  • bin
  • obj
  • * .user
  • * .suo

Tutto il resto mi impegno. Per una versione che verrà inviata a un cliente, imposto anche i binari esatti che ho inviato.

+0

+ * .sdf e * .opensdf – Svisstack

7

È necessario includere tutto ciò che è necessario per costruire il progetto, non tutto ciò che il progetto produce poiché qualcuno che lo ricompilerà sarà in grado di produrlo compilando.

Nel caso di un progetto C# che è il vostro file di soluzione (.sln), il file di progetto o il file ( csproj), ed i file sorgente (Cs) e file di risorse (.resx , * .bmp, * .png, ecc.). Ciò include i file nella cartella Proprietà, perché quelli contengono impostazioni globali per il progetto.

Non si esegue alcun commit nel debug/release, si tratta di output di creazione del progetto. Come regola generale, non si impegnano file binari (* .dll, * .exe).

Come test se si è impegnati abbastanza, controllare l'origine in una diversa directory sul computer e tentare di ricostruire il progetto.

+2

+1 per "Come test se hai commesso abbastanza, controlla l'origine in una diversa directory sul tuo computer e prova a ricostruire il progetto" –

3

commetto tutto, tranne:

  • la \ bin
  • directory \ obj
  • file .suo e .user

Vedi this question per i dettagli su che l'ultimo pezzo.

3

commettono:

  • file sorgenti e le cartelle

  • Risorse (XML, CSS, file ini ...)

  • binari non-generated (immagini, icone, suoni ..)

Non commettere:

  • file compilati (exe, dll, jar)

  • file sorgente generato

  • file specifici di configurazione della macchina, vale a dire i file che contengono dire filepaths in un file locale sul tuo computer che potrebbe trovarsi su completamente diverso sul mio computer.

Problemi correlati