Które typy plików Visual C ++ powinny być objęte kontrolą wersji?


170

Które typy plików Visual Studio \ Visual C ++ powinny zostać zatwierdzone do kontroli wersji?
W swoim projekcie mam następujące typy plików:

aps
cpp
exe
filters
h
ico
idb
ipch
lastbuildstate
lib
log
manifest
obj
pch
pdb
rc
rc2
res
sdf
sln
suo
tlog
txt
user
vcxproj

Byłbym bardzo wdzięczny za krótkie uzasadnienie każdego. Jeśli którekolwiek z nich są kontrowersyjne, zanotuj to. Celowo dołączam nawet trywialne typy plików dla kompletności.

EDYTOWAĆ

Z jednej strony chciałbym być w przyszłości niezależny od platformy. Z drugiej strony chciałbym w najbliższej przyszłości pracować z członkami zespołu o podobnych konfiguracjach. Zgodność folderów między konfiguracjami jest z pewnością opcją, więc pliki konfiguracyjne przechowujące ścieżki mogą być uwzględnione, jeśli ułatwi to przepływ pracy.
Ponownie, z pewnością doceniłbym wyjaśnienie, co jest.


23
Wow, to pytanie jest prawdziwym świadectwem rosnącej liczby plików tymczasowych, które VS nalega na utworzenie w katalogu twojego projektu.
Nik Reiman

@Nik: nie ma ich w katalogu projektu.
Hans Passant

1
@Hans, są albo tam, albo w podkatalogu projektu
Nik Reiman

@Nik: not the msbuild goo. Co, jak zakładam, miałeś na myśli z plikami tymczasowymi. Zgadzam się, to nie jest ładne.
Hans Passant

6
Zapraszam do wypróbowania środowiska programistycznego ISE firmy Xilinx (do programowania HDL) i sprawdzenia, ile plików tymczasowych wypluwa. Setki plików z setkami rozszerzeń :) Porozmawiaj o bałaganie. W porównaniu z nim Visual Studio jest bardzo czysty.
Mark Lakata,

Odpowiedzi:


232

Tak:

  • cpp: kod źródłowy
  • filtry: plik projektu
  • h: kod źródłowy
  • ico: zasób
  • rc: skrypt zasobów
  • rc2: skrypt zasobów
  • sln: plik projektu
  • txt: element projektu
  • vcxproj: plik projektu

Nie:

  • aps: ostatni stan edytora zasobów
  • exe: wynik kompilacji
  • idb: stan kompilacji
  • ipch: pomocnik budowania
  • lastbuildstate: pomocnik kompilacji
  • lib: wynik kompilacji. Może być stroną trzecią
  • log: dziennik kompilacji
  • manifest: build helper. Można napisać samodzielnie.
  • obj: pomocnik kompilacji
  • pch: build helper
  • pdb: wynik kompilacji
  • res: pomocnik budowania
  • sdf: intellisense dbase
  • suo: opcje użytkownika rozwiązania
  • tlog: dziennik kompilacji
  • użytkownik: ustawienia debugowania. Zachowaj, jeśli tylko jedno programowe lub niestandardowe ustawienia debugowania

Niektóre z nich są niepewne, ponieważ mogą być zarówno generowane automatycznie, jak i obsługiwane samodzielnie. Jest jeszcze kilka, których nie ma na Twojej liście. Przede wszystkim zwróć uwagę na lokalizację pliku. Jeśli znajduje się w katalogu rozwiązania lub projektu, jest wysoce prawdopodobne, że zechcesz to sprawdzić. W podkatalogach Debug lub Release jest to wysoce nieprawdopodobne. Build + Clean usuwa wiele plików szumów. I oczywiście: zaewidencjonuj, zmień nazwę katalogu projektu, wyewidencjonuj i sprawdź, czy się buduje.


To jest bardzo przydatne. Mój projekt ma również .vcb (ten projekt został przekonwertowany ze starszej wersji (eVC), więc może być z tym powiązany.
Robbie Matthews

A co z .vcxproj.filtersplikami?
John Alexiou

1
Również NIE dla .OPENSDF
Zam

1
@ ja72 znajduje filterssię na liście „tak” od pierwszej wersji odpowiedzi
Asteroids With Wings

26

Z Twojej listy wybrałbym te:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

Ogólnie rzecz biorąc, powinieneś wersjonować wszystkie pliki niezbędne do zbudowania projektu. Pliki generowane automatycznie nie powinny być archiwizowane imho.


@ milan1612 dziękuję za zwięzłą listę. W porównaniu z odpowiedzią Hansa Passanta powiedziałeś, że powinienem udostępniać pliki manifestu tam, gdzie powiedział, że nie powinienem. Czy mógłbyś wyjaśnić, co oznacza ten plik i dlaczego myślisz, że powinienem go zatwierdzić, szczególnie w środowisku zespołowym (i przyszłym środowisku międzyplatformowym), jeśli ma to znaczenie?
Jonathan

3
manifesty mogą mieć różne cele. Stworzyłem ręcznie te dołączone do pliku zasobów, które spowodowały, że okna zastosowały style do mojego okna. istnieją również manifesty, które umożliwiają wdrażanie bibliotek DLL standardowych wraz z plikiem wykonywalnym. pomyśl o metadanych dotyczących twojej aplikacji ...
Mediolan

@ milan1612 - Napotkałem dodatkowy typ - suo, czy to też powinno zostać dodane? jeśli tak, czy możesz dodać go do swojej listy, aby uzyskać kompletność?
Jonathan

3
@Jonathan Suo przechowuje dane specyficzne dla programisty związane z rozwiązaniem (np. Które pliki są otwarte lub które foldery są otwarte / zwinięte w eksploratorze rozwiązań). Dlatego nie powinien znajdować się w kontroli wersji.
Daniel Rose

1
@ milan1612 - Czy po wprowadzeniu Daniela Rose'a mógłbyś usunąć suo z listy?
Jonathan

17

Zgodnie z sugestią firmy Microsoft, typy plików, które powinny być uwzględnione w kontroli wersji:

.mak, .dsp, .c, .rc, .rc2, .ico, .bmp, .txt, .def, .hpj, .bat, .rtf, .odl, .inf, .reg, .cnt, .cpp , .cxx, .h, .hpp, .hxx, .inl, .tpl, .vtp i .mst ...

Typy plików, których nie należy uwzględniać w:

.pch, .mdp, .ncb, .clw, .obj, .exe, .aps, .cpl, .awk, .exp, .lib, .idb, .opt, .pdb, .map, .res, .ilk , .scc, .bsc, .sbr, .dll i .tlb ...

Ale w przypadku korzystania z zewnętrznego narzędzia w pliku exe lub zewnętrznej bibliotece myślę, że powinno ono również zostać uwzględnione w kontroli wersji

INFO: Które pliki Visual C ++ dodać do kontroli kodu źródłowego

Ponadto to łącze opisuje typy plików dla projektów Visual C ++ w programie Visual Studio 2017.


7

Jeśli klikniesz prawym przyciskiem myszy projekt, w menu kontekstowym powinna pojawić się opcja „Dodaj rozwiązanie do kontroli źródła”.

Jeśli tego użyjesz, zostaną dodane tylko te pliki, które są niezbędne. Wszystkie pliki pośrednie i wyjściowe zostaną zignorowane.


4

Pozostałe odpowiedzi są doskonałe; Pomyślałem, że wniosę przydatne małe narzędzie. Zapoznaj się z szablonem Visual Studio .gitignore w witrynie GitHub. Jest to ładna, aktywnie utrzymywana lista plików, które są często poza kontrolą wersji.

A skoro już o tym mowa, całe repozytorium gitignore jest bardzo użytecznym źródłem dla wszelkiego rodzaju programów, od ActionScript po Zend . Jeśli nie używasz Gita, nadal możesz używać plików gitignore jako odniesienia.


1

Ogólnie rzecz biorąc, należy dodać wszystkie pliki, które pojawiają się w Eksploratorze rozwiązań, do kontroli wersji. Ponadto należy dołączyć pliki .sln (plik rozwiązania) i .vcproj / .vcxproj / .vbproj / .csproj (plik projektu).

Zwróć uwagę, że jeśli masz wtyczkę kontroli źródła dla programu Visual Studio, taką jak TFS lub AnkhSvn, nie musisz się tym wyraźnie przejmować. Program Visual Studio wie, które pliki muszą być objęte kontrolą wersji i przekazuje dane do wtyczki kontroli źródła. Tylko jeśli używasz narzędzia zewnętrznego (np. TortoiseSVN), potrzebujesz takiej listy.


0

Tylko te elementy, które są potrzebne do zbudowania celu. Myślę, że to jest po prostu .cpp .h .ico .rc .txt .manifest .rc2

Nie wiem, co to jest sdf, aps, filtry, użytkownik, nie widziałem ich w moich kompilacjach C ++.

Wystarczy spojrzeć i dowiedzieć się, czy zawierają kod napisany przez programistę, czy też są generowane przez VS.


4
Na pewno potrzebne są pliki .sln i .vcxproj - opisują projekt i rozwiązanie.
ostry ząb

Tak, jeśli nie utrzymujesz plików makefiles. Przepraszam, jestem osobiście tak Anti-VS / MS, że zapomniałem, że są ludzie używający Visual Studio jako jedynego narzędzia dla swoich programistów. Używam tylko debugera.
Lothar

3
no cóż, pliki projektu VS to także pliki makefile
Mediolan

-2

W przeciwieństwie do tego, co zostało powiedziane we wcześniejszej odpowiedzi, chciałbym zwrócić uwagę, że kontrola wersji pliku .opt wydaje się być ważna w celu śledzenia opcji użytkownika. Zobacz odniesienie poniżej:

https://msdn.microsoft.com/en-us/library/aa278994(v=vs.60).aspx


1
Pliki .opt sterują wyglądem i działaniem IDE, a nie sposobem kompilacji programu. Więc to, co czujesz dobrze w IDE, niekoniecznie jest dobre z perspektywy innych
phuclv
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.