Какие типы файлов Visual C ++ должны использоваться для контроля версий?

170

Какие типы файлов Visual Studio \ Visual C ++ должны быть зафиксированы для контроля версий?
В моем проекте у меня есть следующие типы файлов:

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

Я был бы очень признателен за короткое рассуждение для каждого. Если какой-либо из них является спорным, пожалуйста, обратите внимание. Я намеренно включаю даже тривиальные типы файлов для полноты.

РЕДАКТИРОВАТЬ

С одной стороны, я бы хотел быть независимым от платформы в будущем. С другой стороны, в ближайшем будущем я хотел бы поработать с членами команды с подобными настройками. Совместимость папок между установками, безусловно, является опцией, поэтому файлы конфигурации, содержащие пути, могут быть включены, если это облегчает рабочий процесс.
Опять же, я был бы признателен за объяснение, что к чему.

Джонатан
источник
23
Вау, этот вопрос является истинным свидетельством растущего числа временных файлов, которые VS настаивает на создании в каталоге вашего проекта.
Ник Рейман
@Nik: их нет в каталоге проекта.
Ганс Пассант
1
@ Ганс, они либо там, либо в подкаталоге проекта
Ник Рейман
@Nik: не MSbuild Goo. Который я предполагаю, что вы имели в виду временные файлы. Я согласен, это не красиво.
Ганс Пассант
6
Я приглашаю вас попробовать среду разработки ISE Xilinx (для программирования HDL) и посмотреть, сколько временных файлов он выбрасывает. Сотни файлов с сотнями расширений :) Поговорим о беспорядке. Visual Studio очень чист в сравнении.
Марк Лаката

Ответы:

232

Да:

  • cpp: исходный код
  • фильтры: файл проекта
  • h: исходный код
  • ico: ресурс
  • rc: ресурсный скрипт
  • rc2: ресурсный скрипт
  • sln: файл проекта
  • txt: элемент проекта
  • vcxproj: файл проекта

Нет:

  • aps: последнее состояние редактора ресурса
  • exe: результат сборки
  • idb: состояние сборки
  • ipch: сборка помощника
  • lastbuildstate: сборка помощника
  • lib: результат сборки. Может быть третьим лицом
  • журнал: сборка журнала
  • манифест: сборка помощника. Можно написать самому.
  • obj: сборка помощника
  • pch: сборка помощника
  • pdb: результат сборки
  • Res: построить помощник
  • sdf: intellisense dbase
  • suo: пользовательские опции решения
  • tlog: сборка журнала
  • пользователь: настройки отладки. Сохранять, если только один dev или пользовательские настройки отладки

Некоторые из них ненадежны, потому что они могут быть автоматически сгенерированы и поддерживаться самостоятельно. И есть еще несколько, которые не появляются в вашем списке. В первую очередь обратите внимание на расположение файла. Если он находится в каталоге вашего решения или проекта, то, скорее всего, вы захотите проверить его. В подкаталогах Debug или Release это маловероятно. Build + Clean удаляет много файлов шума. И конечно: регистрация, переименование каталога проекта, проверка и проверка его сборки.

Ганс Пассант
источник
Это очень полезно. Мой проект также имеет .vcb (этот проект был преобразован из более старой версии (eVC), поэтому может быть связано с этим.
Робби Мэттьюс
Как насчет .vcxproj.filtersфайлов?
Джон Алексиу
1
Также НЕТ для .OPENSDF
Zam
1
@ ja72 filtersбыл в списке «да» со времени первой редакции ответа
астероиды с крыльями
26

Из вашего списка я бы выбрал те:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

Как правило, вам следует версия всех файлов, необходимых для сборки проекта. Автоматически сгенерированные файлы не должны быть заархивированы imho.

Милан
источник
@ milan1612 спасибо за краткий список. По сравнению с ответом Ханса Пассанта вы сказали, что я должен передать файлы манифеста там, где он сказал, что не должен. Не могли бы вы уточнить, что означает этот файл и почему, по вашему мнению, я должен его зафиксировать, особенно в командной (и будущей кроссплатформенной) среде, если это актуально?
Джонатан
3
манифесты могут иметь разные цели. Я вручную создал файлы, включенные в файл ресурсов, из-за которых окна применяли стили к моему окну. Кроме того, существуют манифесты, которые позволяют вам развертывать стандартные библиотеки DLL вместе с исполняемым файлом. Подумайте о метаданных вашего приложения ...
Милан,
@ milan1612 - Я столкнулся с дополнительным типом - suo, это тоже нужно добавить? Если да, не могли бы вы добавить его в свой список для полноты?
Джонатан
3
@Jonathan Suo содержит специфичные для разработчика данные, связанные с решением (например, какие файлы открыты или какие папки открыты / свернуты в обозревателе решений). Таким образом, он не должен быть в управлении версиями.
Даниэль Роуз
1
@ milan1612 - Следуя указаниям Дэниела Роуза, не могли бы вы удалить suo из своего списка?
Джонатан
17

Как предлагает Microsoft, типы файлов, которые должны быть включены в контроль версий:

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

Типы файлов, которые не должны быть включены в:

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

Но в случае использования внешнего инструмента в exe-файле или внешней библиотеке, я думаю, что это также должно быть включено в контроль версий

ИНФОРМАЦИЯ: Какие файлы Visual C ++ добавить в элемент управления исходного кода

Кроме того, эта ссылка описывает типы файлов для проектов Visual C ++ в Visual Studio 2017.

phuclv
источник
7

Если вы щелкнете правой кнопкой мыши по проекту, в контекстном меню должна быть опция «Добавить решение в систему управления версиями».

Если вы используете это, будут добавлены только те файлы, которые необходимы. Все промежуточные и выходные файлы будут игнорироваться.

ChrisF
источник
4

Другие ответы превосходны; Я просто думал, что внесу полезный маленький инструмент. Проверьте шаблон Visual Studio .gitignore на GitHub. Это хороший активно поддерживаемый список файлов, которые обычно хранятся вне контроля версий.

И пока вы работаете над этим, весь репозиторий gitignore является очень полезным ресурсом для всех видов разработки, от ActionScript до Zend . Если вы не используете Git, вы все равно можете использовать файлы gitignore в качестве ссылки.

Фил
источник
1

В общем, вы должны добавить все файлы, которые появляются в Solution Explorer, для контроля версий. Кроме того, вам нужно включить файлы .sln (файл решения) и .vcproj / .vcxproj / .vbproj / .csproj (файл проекта).

Обратите внимание, что если у вас есть плагин управления исходным кодом для Visual Studio, такой как TFS или AnkhSvn, нет необходимости явно заботиться об этом. Visual Studio знает, какие файлы должны быть в управлении версиями, и передает данные плагину управления версиями. Только если вы используете внешний инструмент (например, TortoiseSVN), вам нужен такой список.

Даниэль Роуз
источник
0

Только те предметы, которые необходимы для построения вашей цели. Я думаю, что это просто .cpp .h .ico .rc .txt .manifest .rc2

Я не знаю, что такое sdf, aps, filters, user, не видел их в моих сборках C ++.

Просто посмотрите и выясните, содержат ли они код, написанный программистом, или они сгенерированы VS.

Лотар
источник
4
.sln и .vcxproj нужны наверняка - они описывают проект и решение.
sharptooth
Да, если вы не поддерживаете make-файлы. Извините, я лично настолько анти-VS / MS, что забыл, что есть люди, использующие Visual Studio как единственный инструмент для своих разработчиков. Я использую только отладчик.
Лотар
3
ну, файлы проекта VS тоже makefiles
Милан,
-2

Вопреки тому, что было сказано в предыдущем ответе, я хотел бы отметить, что для управления версиями файла .opt важно отслеживать параметры пользователя. Смотрите ссылку ниже:

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

Митч
источник
1
Файлы .opt контролируют внешний вид среды IDE, а не способ компиляции вашей программы. Так что то, что вам
нравится