Najlepsze praktyki w projektach Subversion i Visual Studio

Ostatnio zacząłem pracować nad różnymi projektami C# w Visual Studio jako część planu dla systemu na dużą skalę, który będzie używany do zastąpienia naszego obecnego systemu zbudowanego z połączenia różnych programów i skryptów napisanych w C i perlu. Projekty, nad którymi teraz pracuję, osiągnęły masę krytyczną za zaangażowanie w subversion. Zastanawiałem się, co powinno, a czego nie powinno się umieszczać w repozytorium projektów Visual Studio. Wiem, że wygeneruje Różne pliki, które są po prostu artefaktami i naprawdę nie muszą być popełniane, i zastanawiałem się, czy ktoś ma jakieś rady dotyczące prawidłowego korzystania z SVN z Visual Studio. W tej chwili używam serwera SVN 1.6 z Visual Studio 2010 beta. Wszelkie porady, opinie są mile widziane.

Author: Bitterblue, 2009-11-14

7 answers

Według MSDN :

Możesz dodać następujące pliki do Visual Studio source control:

  • Solution files (*.sln).
  • pliki projektów, na przykład, *.csproj, *.vbproj pliki.
  • pliki konfiguracyjne aplikacji, oparte na XML, używane do kontrolowania zachowania w czasie wykonywania projektu Visual Studio.

Pliki, których nie można dodać do kontroli źródła, zawierają następujące elementy:

  • pliki opcji użytkownika rozwiązania (*.suo).
  • projektuj pliki opcji użytkownika, na przykład, *.csproj.user, *.vbproj.user Pliki.
  • webowe pliki informacyjne, na przykład, *.csproj.webinfo, *.vbproj.webinfo, które kontrolują wirtualną lokalizację głównego projektu internetowego.
  • tworzy pliki wyjściowe, na przykład pliki *.dll i *.exe.
 87
Author: Justin R.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-06 04:25:59

Sugerowałbym użycie AnkhSVN - wtyczki sterującej źródłami Subversion dla Visual Studio 2008/2010.

Można go użyć do wykonania początkowego dodawania i zatwierdzania rozwiązań, projektów i źródeł do repozytorium, a to nie spowoduje dodania żadnego z artefaktów budowania. Nie będzie dodawać niczego, co jest generowane przez kompilację, tylko pliki, do których odnosi się rozwiązanie. Jeśli są jakieś inne elementy, których potrzebujesz, a których nie ma w Twoim rozwiązaniu, możesz je dodać później.

 16
Author: GraemeF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 01:03:23

Umieść następujące pliki w kontroli wersji:

  • .dsw (VS6 workspace)
  • .dsp (projekt VS6)
  • .sln (VS rozwiązanie)
  • .*proj (VS pliki projektów różnych typów)
  • oczywiście twoje pliki źródłowe i inne artefakty, które tworzysz

Czy Nie umieść następujące pliki do kontroli wersji:

  • .ncb (something to do with browsing or intelsense)
  • .suo (ustawienia przestrzeni roboczej użytkownika, takie jak rozmieszczenie okien, etc-I think)
  • .użytkownik (ustawienia projektu użytkownika, takie jak punkty przerwania itp.)

Nie umieszczaj również żadnych plików obiektowych, plików wykonywalnych, automatycznie generowanych plików (takich jak nagłówki, które mogą zostać wygenerowane).

Jeśli chodzi o Pliki wykonywalne i inne generowane pliki - może być wyjątek, jeśli chcesz mieć możliwość archiwizacji wydań. To może być dobry pomysł, ale prawdopodobnie będziesz chciał zarządzać tym trochę inaczej i być może w innym miejscu niż twój kod źródłowy. Jeśli tak to, również Archiwizuj swoje .pliki pdb, dzięki czemu można debugować rzeczy później. możesz użyć serwera symboli do przechowywania zarchiwizowanych symboli (zobacz Debugging Tools for Windows dla serwera symboli i jego dokumentacji).

Oto moja lista plików specyficznych dla VS, które wykluczam z SVN:

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
 15
Author: Michael Burr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 05:48:10

Poziom roztworu:

  • Dodaj plik rozwiązania .sln
  • ignoruj plik opcji użytkownika rozwiązania

Poziom projektu:

  • dodaj .csproj, .vbproj (A c++ proj?) pliki
  • ignoruj .csproj.user, .vbproj.user Pliki
  • ignoruj katalog bin
  • ignoruj katalog obj
  • ignoruj pliki / katalogi, które są generowane podczas wykonywania (np. dzienniki)

Jeśli używasz I VS addins, mogą generować pliki, które również wymagają ignorowania (np. ReSharper generuje pliki .resharper i .resharper.user).

Ignorowane elementy mogą być ignorowane jawnie przez nazwę pliku (np. MyProject.csproj), lub wzorem wieloznacznym (tj. *.csproj.user).


Po skonfigurowaniu ignorów, sprawdzanie czystej kopii źródła, a następnie budowanie powinno nie wykazywać żadnych modyfikacji (np. brak nowych, niezweryfikowanych plików).

 11
Author: adrianbanks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 01:03:13

Ręcznie dołączałbym wszystkie pliki, których nie powinienem kontrolować.

Mój globalny wzorzec ignorowania to:

.dll .pdb .exe .cache .webinfo .snk bin obj debug _resharper .user resharper

 5
Author: Andre Gallo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 01:04:19

Jeśli używasz listy ignorowanych, SVN uwzględnia wielkość liter. Pamiętaj więc, aby ignorować foldery bin i Bin oddzielnie.

Również, mam pytanie.. dlaczego odświeżanie ikony statusu zajmuje dużo czasu? Czasami robi się to bardzo mylące.

 2
Author: Manoj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-27 19:26:52

Zobacz Mercurial .hgignore dla projektów Visual Studio 2008 dla listy ignorowanych Mercurial. Nie jestem zaznajomiony ze składnią listy ignorowanych SVN, ale ten wątek ma kilka dobrych list tego, co należy zignorować w Visual Studio.

 1
Author: CAD bloke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:42