Mercurial .hgignore dla projektów Visual Studio 2008

164

Jaka jest dobra konfiguracja pliku .hgignore podczas pracy z programem Visual Studio 2008?

W większości rozwijam się samodzielnie, tylko od czasu do czasu klonuję repozytorium, aby ktoś inny nad nim pracował.

Myślę o folderach obj, .suo, .sln, .user itp. Czy można je po prostu dołączyć, czy jest plik, którego nie powinienem dołączać?

Dzięki!

ps: w tej chwili wykonuję następujące czynności: ignoruję wszystkie pliki .pdb i wszystkie foldery obj.

# regexp syntax.
syntax: glob
*.pdb

syntax: regexp
/obj/
Johannes
źródło
6
Uwaga dodatkowa: myślę, że pliki .sln nie powinny być wykluczane z kontroli źródła
Slavo
2
Slavo, masz rację. Pliki rozwiązań (.sln) zawierają strukturę twoich projektów, więc będziesz chciał uwzględnić je w swoim repozytorium.
Nawet Mien

Odpowiedzi:

208

Oto mój standardowy plik .hgignore do użytku z VS2008, który został pierwotnie zmodyfikowany z pliku ignorowania Git:

# Ignore file for Visual Studio 2008

# use glob syntax
syntax: glob

# Ignore Visual Studio 2008 files
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.lib
*.sbr
*.scc
[Bb]in
[Dd]ebug*/
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
Nawet Mien
źródło
4
Nie, ale mają tę samą koncepcję pliku ignorowania.
Nawet Mien
2
Linia [Db] ebug * / - zakładam, że powinna to być mała litera d, a nie mała litera b, użyłem tej listy ignorowanych jako szablonu i zajęło mi minutę, aby dowiedzieć się, dlaczego do cholery folder "debug" nie był ' t jest ignorowany :) Dzięki za wspaniały plik ignorowania.
Nate Pinchot
4
Szukałem kodu ignorowania, którego Rob Connery użył w swoim filmie Mercurial dla Codeplex Tekpub i pasował dokładnie do tego. Dobra robota!
Ben McCormack,
1
Dla mnie oznaczało to zignorowanie pliku o nazwie Debug.Something.dll.config, więc myślę, że końcowy / on [Dd] ebug * / nie daje pożądanego efektu. Może dla Windows powinno to być [Dd] ebug * \?
Rory
2
Dla mnie oznaczało to zignorowanie pliku o nazwie Debug.Something.dll.config, więc myślę, że końcowy / on [Dd] ebug * / nie daje pożądanego efektu. Myślę, że problem polega na tym, że składnia w stylu glob nie jest poprawnie dopasowana do katalogów. Jeśli wyjąć i debugowych linie i zastąpić je trzy nowe linie na dole pliku: syntax: regexpa [Rr]elease.*/i [Dd]ebug.*/wtedy wydaje się działać poprawnie.
Rory
37

Jest to specyficzne dla projektu C #, ale ignoruję te pliki / katalogi:

  • *.csproj.user
  • /obj/*
  • /bin/*
  • *.ncb
  • *.suo

Nie mam problemów z uruchomieniem kodu w składzie na innych maszynach po zignorowaniu wszystkich tych plików. Najłatwiejszym sposobem ustalenia, co musisz zachować, jest utworzenie kopii folderu i rozpoczęcie usuwania rzeczy, które Twoim zdaniem nie są konieczne. Próbuj dalej budować i tak długo, jak możesz pomyślnie budować, kontynuuj usuwanie. Jeśli usuniesz zbyt dużo, skopiuj go z folderu źródłowego.

W końcu będziesz miał ładny katalog pełen jedynych plików, które muszą zostać zatwierdzone.

Daniel Jennings
źródło
5
Ignoruję również pliki * .config, ponieważ mój zespół programistów działa w nieco innych środowiskach (lokalna instancja bazy danych, lokalny serwer poczty e-mail itp.). Ponadto hasła znajdują się w pliku web.config.
Ash Machine
Zawsze myślałem, że potrzebujesz do tego .suo, dzięki za cynk. Mieliśmy na tym cały czas konflikty.
shmeeps
24

Czuję się wykluczony z rozmowy. Oto mój plik .hgignore. Obejmuje ogólnie programowanie w językach C #, C ++ i Visual Studio, w tym elementy COM (biblioteki typów), niektóre końcowe pliki konstruktorów, uaktualnienia projektów CodeRush, ReSharper i Visual Studio. Ma również pewne ignorowania dotyczące nowoczesnego (ok.2015) tworzenia stron internetowych.

syntax: glob

* - [Cc]opy
* - [Cc]opy/
* - [Cc]opy (?)/
* - [Cc]opy.*
* - [Cc]opy (?).*
**/.*
**/scss/*.css
*.*scc
*.FileListAbsolute.txt
*.aps
*.bak
*.bin
*.[Cc]ache
*.clw
*.css.map
*.eto
*.exe
*.fb6lck
*.fbl6
*.fbpInf
*.ilk
*.lib
*.log
*.ncb
*.nlb
*.nupkg
*.obj
*.old
*.orig
*.patch
*.pch
*.pdb
*.plg
*.[Pp]ublish.xml
*.rdl.data
*.sbr
*.scc
*.sig
*.sqlsuo
*.suo
*.svclog
*.tlb
*.tlh
*.tli
*.tmp
*.user
*.vshost.*
*.docstates
*DXCore.Solution
*_i.c
*_p.c
__MVC_BACKUP/
_[Rr]e[Ss]harper.*/
_UpgradeReport_Files/
Ankh.Load
Backup*
[Bb]in/
bower_components/
[Bb]uild/
CVS/
[Dd]ebug/
[Ee]xternal/
hgignore[.-]*
ignore[.-]*
lint.db
node_modules/
[Oo]bj/
[Pp]ackages/
PrecompiledWeb/
[Pp]ublished/
[Rr]elease/
svnignore[.-]*
[Tt]humbs.db
UpgradeLog*.*
Damian Powell
źródło
+1, Twój używa Debug /, więc nie będzie zapisywać „Debug.something.cs”
Sebastian
11

Oto zawartość mojego .hgignore dla projektów C # Visual Studio:

syntax: glob
*.user
*.ncb
*.nlb
*.suo
*.aps
*.clw
*.pdb
*\Debug\*
*\Release\*

Kilka uwag:

  1. Jeśli oprócz pozycji „Debug” i „Release” masz niestandardowe „wydania”, może być konieczne ich dodanie.
  2. Zachowaj ostrożność podczas ręcznej edycji pliku .hgignore. Jeśli popełnisz błąd składniowy, hgtortoise nie będzie już otwierać okna zatwierdzenia.
jm.
źródło
8

Zawartość mojego pliku Mercurial .hgignore:

syntax: glob
#-- Files
*.bak.*
*.bak
thumbs.db

#-- Directories
App_Data/*
bin/
obj/
_ReSharper.*/
tmp/

#-- Microsoft Visual Studio specific
*.user
*.suo

#-- MonoDevelop specific
*.pidb
*.userprefs
*.usertasks

Pamiętaj, że pracuję głównie nad projektami WinForms, ASP.NET MVC i Mobile przy użyciu Microsoft Visual Studio i sporadycznie MonoDevelop. W zależności od zestawu narzędzi i typów projektów prawdopodobnie napotkasz inne pliki, które należy zignorować.

Staram się zachować najnowszą wersję w CodePaste.NET pod adresem http://codepaste.net/zxov7i

AlGonzalez
źródło
4

kilka innych, których używam:

output
PrecompiledWeb
_UpgradeReport_Files

#Guidance Automation Toolkit
*.gpState
#patches
*.patch
rohancragg
źródło
3

Oto kilka nieznośnych: automatyczne zapisywanie w Matlab i Excel / Office.

# use glob syntax
syntax: glob

# Matlab ignore files
*.asv

# Microsoft Office
~$*

Jeśli przypadkowo je dodam, a następnie zamknę rzeczywisty plik, który był otwarty, Excel i / lub Matlab usuwają automatyczne zapisywanie, a następnie Mercurial utknie, zastanawiając się, dokąd się udali. Jestem pewien, że istnieją inne programy, które robią podobne rzeczy.

Nathan Donnellan
źródło