Изменить CreationDate для TFS Changeset

В настоящее время я создаю инструмент миграции с одной системы контроля версий на TFS и использую Microsoft.TeamFoundation.Client сборка и столкнулись с проблемой. Я могу имитировать изменения для каждого Changeset, но CreationDate свойство автоматически генерируется CheckIn метод, как показано ниже:

var changeSetId = workspace.CheckIn(pendingChanges, userName, comment, note, null, null);

Затем я могу загрузить Changeset объект по идентификатору, который был возвращен CheckIn метод:

var changeSet = workspace.VersionControlServer.GetChangeset(changeSetId);

Я пытаюсь установить CreationDate (не только для чтения) в Changeset и я могу сделать это с помощью следующего кода:

changeSet.CreationDate = legacyLog.Date;
changeSet.Update();

Но после вызова Update метод, изменения не сохраняются на сервере, так как я пытался проверить дату в браузере, и он по-прежнему показывает сегодняшнюю дату как CreationDate (если я не понимаю, где эта дата отображается / отображается). Кто-нибудь пытался изменить CreationDate для Changeset раньше или я об этом все не так?

2 ответа

Решение

Я согласен с DaveShaw, вам нужно напрямую изменить время регистрации изменений в базе данных TFS. Оператор SQL: UPDATE tbl_Changeset SET CreationDate='?' ГДЕ ChangeSetId='?'

Пожалуйста, проверьте исходный код ModifyCheckinDate2012 по этой ссылке для деталей: https://tfsprod.codeplex.com/SourceControl/latest

Тем не менее, обратите внимание, что не рекомендуется вносить изменения непосредственно в базу данных TFS, так как это может привести к некоторым потенциальным рискам.

Обновление даты изменения полностью НЕ ПОДДЕРЖИВАЕТСЯ. Объект сервера TFVC гарантирует, что наборы изменений всегда создаются в хронологическом порядке, и делает несколько предположений на основе этого подтверждения.

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

Я проверил с командой продукта, чтобы быть уверенным, их ответ:

Да, мы, безусловно, делаем это предположение в коде TFVC.

Таким образом, при изменении даты существует ряд не публично документированных правил, которые необходимо учитывать. В противном случае ваша база данных может не обновиться в будущем или не сможет быть импортирована в VSTS, когда вы совершите переход.

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

Другие вопросы по тегам