Может ли Visual Studio запомнить MD5 моих исходных файлов, чтобы избежать их восстановления при изменении временной метки, но не содержимого? - PullRequest
5 голосов
/ 25 января 2011

Большую часть времени я делаю несколько различных разработок для одного и того же проекта, и, чтобы иметь некоторое логическое разделение между ними, я использую персональную систему контроля версий в проекте (а именно ископаемое , но это слишком много подробностей).

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

Но когда я переключаюсь с ветви на другую (например, для выполнения какого-либо действия по слиянию) и возвращаюсь туда, откуда пришел, Visual Studio обнаруживает изменения меток времени и восстанавливает файлы, которые на самом деле не были изменены.

Есть ли способ попросить Visual Studio считать, что исходный файл изменился, когда изменился только некоторый хэш его содержимого?

Поскольку ответ, кажется, «нет», это еще один способ добиться того, чего я хотел бы, для которого я начинаю щедрость. Все же прочитайте выше, пожалуйста.

Вам известен простой способ создания моментальных снимков меток времени и хэшей MD5 моих исходных файлов, а затем для каждого файла, для которого изменена метка времени, сравните модификацию MD5 и метку времени отката, если MD5 не изменилась?

Спасибо за ваши ответы.

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Боюсь, это не совсем возможно.

Проблема здесь в том, что это не просто вещь для VS, но фактически для всей системы сборки, которая совершенно отделена от реальной IDE.
Чтобы решить, следует ли компилировать .obj, VS сравнивает свою временную метку с временной меткой исходного файла. Выполнение того, что вы предлагаете, потребует, чтобы файл .obj включал MD5 файла. Это также относится к .exe и .dll файлам. Изменение двоичного формата этих файлов и вряд ли произойдет для такой редко необходимой функции.


Редактировать - я забираю это назад, это, вероятно, возможно в теории. Один из способов - написать плагин VS. Плагин сохранит MD5 в какой-то файл в выходном каталоге, а непосредственно перед началом сборки обновит даты изменения соответствующих файлов.

Если подумать дальше, это можно сделать с помощью шага перед сборкой ..?

1 голос
/ 11 февраля 2011

Простой обходной путь может заключаться в написании сценария, который просматривает файл, о котором Visual Studio не знает, и, если он изменился, копирует его, чтобы перезаписать файл, о котором Visual Studio знает, Файл, который видит Visual Studio, затем исключается из системы контроля версий, поэтому его метки времени не должны затрагиваться.

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

Visual Studio определенно имеет возможность включать генераторы кода в сборку - именно таков будет этот сценарий в глазах Visual Studios. Хотя я не знаю деталей - я получаю cmake, чтобы управлять этими вещами для меня.

...