2009-02-25 20 views
67

Sto supportando un certo numero di sviluppatori .Net che stanno utilizzando Subversion per controllare la loro versione del lavoro, ma abbiamo riscontrato una serie di problemi che sembrano ruotare attorno ai file aggiuntivi che Visual Studio utilizza per gestire i progetti, fare il debug, ecc. In particolare, sembra che questi file stiano causando conflitti dovuti al fatto che sono già nel repository. So come farli uscire e come gestirli, ma ho bisogno di sapere che cosa "loro" sono i primi.Quali file di Visual Studio devono essere ignorati da subversion per minimizzare i conflitti?

Quindi, quali sono i file/directory che Subversion può ignorare, e perché possono essere ignorati? (Aka. Cosa fanno quei file fanno?)

Questo è un grande, ASP.Net piuttosto non-organizzato il sito e la distribuzione del sito sono fatti via. aggiornamenti svn, quindi i file necessari a IIS per compilare in modo dinamico (penso che sia quello che è) il sito in quanto i cambiamenti di file devono essere lasciati nel repository.

+0

Se si utilizzava un plug-in VS per VS integrato con SVN, allora lo stesso VS aggiungerebbe solo i file necessari a SVN. In quanto tale, filtra i file che non devono essere controllati dalla versione. – jussij

+1

@jussij - Ho scoperto che i client SVN integrati in VS sono significativamente inferiori rispetto ai client SVN standalone, motivo per cui ho posto la domanda :) – cdeszaq

+0

Non sono sicuro di quali plug-in hai provato, ma come autore di uno di questi plug-in VS (che è basato su MS-SCCI), trovo che può rendere molto semplice lavorare con SVN. Perché? Perché l'IDE controlla quali file vengono inseriti nel repository. Inoltre, l'aggiunta, la rimozione o lo spostamento di file possono essere eseguiti dall'interno dell'IDE. Infine, l'IDE fornisce un feedback visivo sullo stato dei file (cioè file non aggiunto, file obsoleto, ecc.). – jussij

risposta

79
  • bin e obj directory
  • file * .user (MyProject.csproj.user)
  • * .suo file

Inoltre, se si utilizza Visual Studio 2015 la directory .VS .

+0

@plntxt Suppongo che attualmente la cartella dei pacchetti debba far parte di questo elenco, a meno che non ci sia qualche sfumatura che non sto prendendo in considerazione. – wode

1

Probabilmente direi qualcosa nella directory bin.

3

AnkhSVN fa un ottimo lavoro solo nel controllare i file necessari per il progetto.

+1

Hanno una lista ovunque? – cdeszaq

+0

AnkhSVN 2.0 non usa un elenco di cosa ignorare. Il progetto fornisce un elenco di ciò che dovrebbe essere aggiunto al suo Provider SCC, in questo caso AnkhSVN. E AnkhSVN suggerisce solo l'aggiunta di questi file. (Un utente può ignorare queste impostazioni, ma normalmente non dovresti) –

6
  • La directory 'bin' è un buon inizio (come @ Kevin dice).
  • Farebbe bene a ignorare anche la directory 'obj'.
  • * .suo e * .user dovrebbero essere lasciati fuori dal controllo sorgente.
  • * .VisualState.xml sarà anche una scelta personale.
  • TestResults.xml (se si sta utilizzando NUnit)
8
  • * .bin
  • * obj
  • * .exe
  • * .dll
  • * .pch
  • * .user
  • * .suo
  • * .tlb
  • TestResults (VSTS directory test di unità)
1

Oltre a quelle persone che hanno suggerito sopra, ho spesso avuto a ignorare * .cache perché per qualche motivo non so ReSharper piace mettere è File .cache nelle stesse cartelle del codice su cui lavoro. Inoltre, non penso che nessuno abbia menzionato * .pdb ancora.

44

ho avuto fortuna con questo modello globale ignorare:

*bin *obj *suo *.user *.tmp *.TMP 
*resharper* *Resharper* *ReSharper* *.Load *.gpState 
Thumbs.db *.~m2

Sono in esecuzione il plugin ReSharper, in modo probabilmente si può ignorarlo. ". ~ m2" è per un file temporaneo creato dal mio modellatore dati.

Aggiornamento: Grazie per l'up-voto. Di recente ho aggiunto Mac, Dreamweaver, Python e alcuni altri file di Visual Studio che dovrebbero essere ignorati.

*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp 
*[Bb]in *obj *suo *resharp* *.user *.tmp *.TMP *Resharper* 
*ReSharper* *.Load *.gpState *.NoLoad *.~m2 *.dbmdl _notes *.cache 
[Tt]est[Rr]esult [Bb]uild[Ll]og.* *.[Pp]ublish.xml *.[Cc]ache [Tt]humbs.db lint.db 
*.docstates .apdisk [Ll]ogs .DS_Store *.bak *.vs 

Qualcos'altro, se qualcuno controlli accidentalmente in una cartella o un file che deve essere ignorato, allora è necessario rimuovere manualmente i file dal repository SVN prima inizierà ignorando di nuovo. Questo perché i file che sono già nel repository annulleranno qualsiasi impostazione ignora.

+1

sembra che * .gpState venga aggiunto due volte. – superjos

+9

Secondo me le ignoranze globali non sono la strada da percorrere. Quello che succede con questo è che la prossima persona che controlla il tuo progetto vedrà un mucchio di file che sembrano non indirizzati e potrebbero accidentalmente impegnarli. L'uso della proprietà svn-ignore è migliore perché chiunque può utilizzare il progetto in futuro non può sbagliare perché le loro ignorazioni sono già state impostate. – jjathman

6

Credo che una domanda migliore sarebbe " Quali file devo aggiungere a Subversion?"

L'integrazione Subversion AnkhSVN 2.0 chiede esattamente questa domanda a tutti i progetti nella soluzione. (Questa domanda è una delle parti chiave delle specifiche SCC.) Quindi suggerirà di aggiungere questi file.

Come utente è possibile aggiungere altri file manualmente (o contrassegnare alcuni dei file suggeriti come ignorati), ma questo comportamento rende molto facile fare la cosa giusta.

La maggior parte degli altri client di subversion non ha il lusso di parlare con un sistema che capisce veramente cosa dovrebbe e non dovrebbe essere aggiunto. (Ad esempio, client esterni come TortoiseSVN e i suoi front-end possono solo indovinare in base alle estensioni dei file).

+0

Quindi, esiste un modo per determinare ciò al di fuori di Visual Studio? Ankh non soddisfa tutti i nostri bisogni, e per qualche ragione non gioca bene con il modo in cui strutturiamo le cose, quindi non possiamo fare affidamento su di esso per farlo. – cdeszaq

+0

L'unico modo per parlare ai progetti VS come provider SCC è 'come un provider SCC' .. e questo può essere fatto solo da VS. Se si dispone di specifici casi che non sono gestiti da AnkhSVN dovresti dirci su la lista utenti ankhsvn (o pagina uservoice) .. altrimenti non c'è molto che possiamo risolvere :) –

4

Ecco la mia TortoiseSVN globale ignorare:

*.suo *.resharper *.sln bin obj *.user *.suo Debug Release *.pdb test.* _ReSharper*.* *.scc *.vssscc *.vspscc 

Gli ultimi 3 aiuto quando si transizione da Microsoft Visual SourceSafe.

1

Vorrei anche non controllare il file .SDF. È grande e Visual Studio lo ricrea se manca. Si tratta di un database utilizzato per Intellisense per quanto ne so.

6

Vecchio thread, ma voglio aggiungere che è possibile utilizzare l'esempio gitignore di GitHub, trovato here, per un buon punto di partenza.

## Ignore Visual Studio temporary files, build results, and 
## files generated by popular Visual Studio add-ons. 
## 
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 

# User-specific files 
*.suo 
*.user 
*.userosscache 
*.sln.docstates 
*.vcxproj.filters 

# User-specific files (MonoDevelop/Xamarin Studio) 
*.userprefs 

# Build results 
[Dd]ebug/ 
[Dd]ebugPublic/ 
[Rr]elease/ 
[Rr]eleases/ 
x64/ 
x86/ 
bld/ 
[Bb]in/ 
[Oo]bj/ 
[Ll]og/ 

# Visual Studio 2015 cache/options directory 
.vs/ 
# Uncomment if you have tasks that create the project's static files in wwwroot 
#wwwroot/ 

# MSTest test Results 
[Tt]est[Rr]esult*/ 
[Bb]uild[Ll]og.* 

# NUNIT 
*.VisualState.xml 
TestResult.xml 

# Build Results of an ATL Project 
[Dd]ebugPS/ 
[Rr]eleasePS/ 
dlldata.c 

# DNX 
project.lock.json 
project.fragment.lock.json 
artifacts/ 
**/Properties/launchSettings.json 

*_i.c 
*_p.c 
*_i.h 
*.ilk 
*.meta 
*.obj 
*.pch 
*.pdb 
*.pgc 
*.pgd 
*.rsp 
*.sbr 
*.tlb 
*.tli 
*.tlh 
*.tmp 
*.tmp_proj 
*.log 
*.vspscc 
*.vssscc 
.builds 
*.pidb 
*.svclog 
*.scc 

# Chutzpah Test files 
_Chutzpah* 

# Visual C++ cache files 
ipch/ 
*.aps 
*.ncb 
*.opendb 
*.opensdf 
*.sdf 
*.cachefile 
*.VC.db 
*.VC.VC.opendb 

# Visual Studio profiler 
*.psess 
*.vsp 
*.vspx 
*.sap 

# TFS 2012 Local Workspace 
$tf/ 

# Guidance Automation Toolkit 
*.gpState 

# ReSharper is a .NET coding add-in 
_ReSharper*/ 
*.[Rr]e[Ss]harper 
*.DotSettings.user 

# JustCode is a .NET coding add-in 
.JustCode 

# TeamCity is a build add-in 
_TeamCity* 

# DotCover is a Code Coverage Tool 
*.dotCover 

# Visual Studio code coverage results 
*.coverage 
*.coveragexml 

# NCrunch 
_NCrunch_* 
.*crunch*.local.xml 
nCrunchTemp_* 

# MightyMoose 
*.mm.* 
AutoTest.Net/ 

# Web workbench (sass) 
.sass-cache/ 

# Installshield output folder 
[Ee]xpress/ 

# DocProject is a documentation generator add-in 
DocProject/buildhelp/ 
DocProject/Help/*.HxT 
DocProject/Help/*.HxC 
DocProject/Help/*.hhc 
DocProject/Help/*.hhk 
DocProject/Help/*.hhp 
DocProject/Help/Html2 
DocProject/Help/html 

# Click-Once directory 
publish/ 

# Publish Web Output 
*.[Pp]ublish.xml 
*.azurePubxml 
# TODO: Comment the next line if you want to checkin your web deploy settings 
# but database connection strings (with potential passwords) will be unencrypted 
*.pubxml 
*.publishproj 

# Microsoft Azure Web App publish settings. Comment the next line if you want to 
# checkin your Azure Web App publish settings, but sensitive information contained 
# in these scripts will be unencrypted 
PublishScripts/ 

# NuGet Packages 
*.nupkg 
# The packages folder can be ignored because of Package Restore 
**/packages/* 
# except build/, which is used as an MSBuild target. 
!**/packages/build/ 
# Uncomment if necessary however generally it will be regenerated when needed 
#!**/packages/repositories.config 
# NuGet v3's project.json files produces more ignoreable files 
*.nuget.props 
*.nuget.targets 

# Microsoft Azure Build Output 
csx/ 
*.build.csdef 

# Microsoft Azure Emulator 
ecf/ 
rcf/ 

# Windows Store app package directories and files 
AppPackages/ 
BundleArtifacts/ 
Package.StoreAssociation.xml 
_pkginfo.txt 

# Visual Studio cache files 
# files ending in .cache can be ignored 
*.[Cc]ache 
# but keep track of directories ending in .cache 
!*.[Cc]ache/ 

# Others 
ClientBin/ 
~$* 
*~ 
*.dbmdl 
*.dbproj.schemaview 
*.jfm 
*.pfx 
*.publishsettings 
node_modules/ 
orleans.codegen.cs 

# Since there are multiple workflows, uncomment next line to ignore bower_components 
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 
#bower_components/ 

# RIA/Silverlight projects 
Generated_Code/ 

# Backup & report files from converting an old project file 
# to a newer Visual Studio version. Backup files are not needed, 
# because we have git ;-) 
_UpgradeReport_Files/ 
Backup*/ 
UpgradeLog*.XML 
UpgradeLog*.htm 

# SQL Server files 
*.mdf 
*.ldf 

# Business Intelligence projects 
*.rdl.data 
*.bim.layout 
*.bim_*.settings 

# Microsoft Fakes 
FakesAssemblies/ 

# GhostDoc plugin setting file 
*.GhostDoc.xml 

# Node.js Tools for Visual Studio 
.ntvs_analysis.dat 

# Visual Studio 6 build log 
*.plg 

# Visual Studio 6 workspace options file 
*.opt 

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 
*.vbw 

# Visual Studio LightSwitch build output 
**/*.HTMLClient/GeneratedArtifacts 
**/*.DesktopClient/GeneratedArtifacts 
**/*.DesktopClient/ModelManifest.xml 
**/*.Server/GeneratedArtifacts 
**/*.Server/ModelManifest.xml 
_Pvt_Extensions 

# Paket dependency manager 
.paket/paket.exe 
paket-files/ 

# FAKE - F# Make 
.fake/ 

# JetBrains Rider 
.idea/ 
*.sln.iml 

# CodeRush 
.cr/ 

# Python Tools for Visual Studio (PTVS) 
__pycache__/ 
*.pyc 

# Cake - Uncomment if you are using it 
# tools/ 
Problemi correlati