Welche Visual Studio-Dateien sollten von der Subversion ignoriert werden, um Konflikte zu minimieren?

73

Ich unterstütze eine Reihe von .NET-Entwicklern, die Subversion zur Versionskontrolle ihrer Arbeit verwenden, aber wir haben eine Reihe von Problemen festgestellt, die sich anscheinend um die zusätzlichen Dateien drehen, die Visual Studio zum Verwalten von Projekten, zum Debuggen usw. verwendet. Insbesondere scheinen diese Dateien Konflikte zu verursachen, da sie sich bereits im Repo befinden. Ich weiß, wie man sie rausholt und wie man mit ihnen umgeht, aber ich muss zuerst wissen, was "sie" sind.

Also, welche Dateien / Verzeichnisse kann Subversion ignorieren und warum können sie ignoriert werden? (Aka. Was machen diese Dateien?)

Dies ist eine große, eher unorganisierte ASP.Net-Site. Die Bereitstellung der Site erfolgt über. svn-Updates, daher müssen Dateien, die IIS benötigt, um die Site dynamisch zu kompilieren (ich denke, das ist es), während sich die Dateien ändern, im Repo belassen werden.

cdeszaq
quelle
Wenn Sie ein VS-Plug-In verwenden, um VS in SVN zu integrieren, fügt VS selbst nur die benötigten Dateien zu SVN hinzu. Als solches würde es die Dateien herausfiltern, die nicht versioniert werden müssen.
Jussij
2
@jussij - Ich habe festgestellt, dass die VS-integrierten SVN-Clients im Vergleich zu den eigenständigen SVN-Clients deutlich unterdurchschnittlich sind, weshalb ich die Frage gestellt habe :)
cdeszaq
Ich bin mir nicht sicher, welche Plug-Ins Sie ausprobiert haben, aber als Autor eines solchen VS-Plug-Ins (das auf MS-SCCI basiert) finde ich, dass es die Arbeit mit SVN sehr einfach machen kann. Warum? Weil die IDE steuert, welche Dateien in das Repo gestellt werden. Das Hinzufügen, Entfernen oder Verschieben von Dateien kann innerhalb der IDE erfolgen. Schließlich gibt die IDE eine visuelle Rückmeldung zum Status der Dateien (dh Datei nicht hinzugefügt, Datei veraltet usw.).
Jussij
PS: Abgesehen davon beschränkt sich meine Erfahrung auf VS C # WinFroms-Projekte und VS ASP.Net-Projekte könnten ein anderer Fischkessel sein;)
jussij
Ich bin damit einverstanden, dass die Ergänzungen, die eine VC-Lösung zu einer IDE bieten kann, recht nett sind, aber ich habe noch nie ein IDE-VC-Plugin gefunden, das zumindest in Bezug auf die Verwaltung der Versionen so gute Arbeit leistet wie ein dedizierter VC-Client. (Meistens, weil die meisten IDEs VC-Modelle zu allgemein sind). Um fair zu sein, bin ich von SVN zu Mercurial (und jetzt zu Git) gewechselt, weil SVN die Anforderungen, die ich und meine Teams an den Workflow haben, einfach nicht erfüllen konnte.
Cdeszaq

Antworten:

85
  • bin- und obj-Verzeichnisse
  • * .user-Dateien (MyProject.csproj.user)
  • * .suo-Dateien

Wenn Sie Visual Studio 2015 verwenden, verwenden Sie außerdem das Verzeichnis .vs.

Shawn Miller
quelle
@plntxt Ich gehe davon aus, dass der Paketordner derzeit Teil dieser Liste sein sollte, es sei denn, es gibt eine Nuance, die ich nicht berücksichtige.
Wode
47

Ich hatte viel Glück mit diesem globalen Ignoriermuster:

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

Ich verwende das Resharper-Plugin, daher können Sie das wahrscheinlich ignorieren. ". ~ m2" ist für eine temporäre Datei, die mein Datenmodellierer erstellt.

Update: Danke für die Abstimmung. Ich habe kürzlich Mac, Dreamweaver, Python und einige weitere Visual Studio-Dateien hinzugefügt, die ignoriert werden sollten.

*.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

Wenn jemand versehentlich einen Ordner oder eine Datei eincheckt, die ignoriert werden soll, müssen Sie die Dateien manuell aus dem Repository entfernen, bevor SVN sie erneut ignoriert. Dies liegt daran, dass Dateien, die sich bereits im Repo befinden, alle Ignoriereinstellungen überschreiben.

Jamison
quelle
1
es sieht so aus, als ob * .gpState zweimal hinzugefügt wird.
Superjos
9
Meiner Meinung nach sind globale Ignorierungen nicht der richtige Weg. Dies führt dazu, dass die nächste Person, die Ihr Projekt auscheckt, eine Reihe von Dateien sieht, die nicht versioniert aussehen und diese möglicherweise versehentlich festschreiben. Die Verwendung der Eigenschaft svn-ignore ist besser, da dann jeder, der das Projekt in Zukunft verwendet, keinen Fehler machen kann, da seine Ignorierungen bereits eingerichtet sind.
Jjathman
Ein schnelles Update für alle, die diese Kommentare durchgehen - ab SVN 1.8 (veröffentlicht 2013) haben sie die svn:global-ignoresEigenschaft hinzugefügt, die Teil des Repositorys ist, und sie unterscheidet sich von den lokalen globalen Ignorierungen, auf die sich @jjathman meiner Meinung nach bezieht. Weitere Informationen finden Sie hier in den
Versionshinweisen zu
8

Alter Thread, aber ich möchte hinzufügen, dass Sie das Gitignore-Beispiel von GitHub, das hier zu finden ist , als guten Ausgangspunkt verwenden können.

## 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/
Nielsvh
quelle
7
  • *.Behälter
  • * .obj
  • * .exe
  • * .dll
  • * .pch
  • *.Nutzer
  • * .suo
  • * .tlb
  • TestResults (VSTS-Unit-Testverzeichnis)
JaredPar
quelle
6
  • Das Verzeichnis 'bin' ist ein guter Anfang (wie @Kevin sagt).
  • Sie sollten auch das Verzeichnis 'obj' ignorieren.
  • * .suo und * .user sollten am besten von der Quellcodeverwaltung ausgeschlossen werden.
  • * .VisualState.xml wird auch eine persönliche Wahl sein.
  • TestResults.xml (wenn Sie NUnit verwenden)
Hamish Smith
quelle
6

Ich denke, eine bessere Frage wäre " Welche Dateien sollte ich zu Subversion hinzufügen? "

Die AnkhSVN 2.0 Subversion-Integration stellt genau diese Frage an alle Projekte in Ihrer Lösung. (Diese Frage ist einer der Hauptbestandteile der SCC-Spezifikation.) Es wird dann nur vorgeschlagen, diese Dateien hinzuzufügen.

Als Benutzer können Sie andere Dateien manuell hinzufügen (oder einige der vorgeschlagenen Dateien als ignoriert markieren), aber dieses Verhalten macht es sehr einfach, das Richtige zu tun .

Die meisten anderen Subversion-Clients haben nicht den Luxus, mit einem System zu sprechen, das wirklich versteht, was hinzugefügt werden soll und was nicht. (ZB können externe Clients wie TortoiseSVN und seine Frontends nur anhand von Dateierweiterungen raten).

Bert Huijben
quelle
Gibt es also eine Möglichkeit, dies von außerhalb von Visual Studio zu bestimmen? Ankh erfüllt nicht alle unsere Bedürfnisse und spielt aus irgendeinem Grund nicht gut mit der Strukturierung der Dinge. Deshalb können wir uns nicht darauf verlassen, dass dies geschieht.
Cdeszaq
Die einzige Möglichkeit, als SCC-Anbieter mit VS-Projekten zu kommunizieren, ist "als SCC-Anbieter". Dies ist nur innerhalb von VS möglich. Wenn Sie bestimmte Anwendungsfälle haben, die nicht von AnkhSVN behandelt werden, sollten Sie uns dies mitteilen ankhsvn Benutzerliste (oder uservoice Seite) .. sonst gibt es nicht viel, was wir reparieren können :)
Bert Huijben
4

Hier ist meine TortoiseSVN global ignorieren:

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

Die letzten 3 helfen beim Übergang von Microsoft Visual SourceSafe.

Jimmy McNulty
quelle
3

AnkhSVN macht einen großartigen Job, indem es nur die Dateien eincheckt, die für das Projekt notwendig sind.

Scwagner
quelle
1
Haben sie irgendwo eine Liste?
Cdeszaq
AnkhSVN 2.0 verwendet keine Liste der zu ignorierenden Elemente. Das Projekt enthält eine Liste der Elemente, die seinem SCC-Anbieter hinzugefügt werden sollen, in diesem Fall AnkhSVN. Und AnkhSVN schlägt nur vor, diese Dateien hinzuzufügen. (Ein Benutzer kann diese Einstellungen überschreiben, aber normalerweise sollten Sie nicht)
Bert Huijben
1

Ich würde wahrscheinlich alles im bin-Verzeichnis sagen.

kemiller2002
quelle
1

Zusätzlich zu den oben vorgeschlagenen muss ich häufig * .cache ignorieren, da ich aus irgendeinem Grund nicht weiß, dass Resharper seine .cache-Dateien gerne in denselben Ordnern ablegt wie der Code, an dem ich arbeite. Ich glaube auch, dass noch niemand * .pdb erwähnt hat.

Mezoid
quelle
1

Ich würde auch nicht in der .SDF-Datei einchecken. Es ist groß und Visual Studio erstellt es neu, wenn es fehlt. Soweit ich weiß, handelt es sich um eine Datenbank, die für Intellisense verwendet wird.

Chris Bennet
quelle