2017-01-17 5 views
28

Так, начав с использованием JetBrains Annotations, для моей собственной выгоды я украшены все методы с [CanBeNull] или [NotNull]Игнорирование файлов из определенной с приезда характер изменений

Например, следующая строка:

public AccountController(IAccountService accountService) 

будет ли быть изменен:

public AccountController([CanBeNull] IAccountService accountService) 

Другой пример был бы:

public Account CreateAccountEntity(Account accountEnttity) 

будет изменен на:

[CanBeNull] 
    public Account CreateAccountEntity([NotNull] Account accountEnttity) 

Как я могу обойти ожидающие изменения для аннотации, в частности "[CanBeNull]", и TFS полностью игнорировать эти изменения?

+0

Когда кто-то проверяет ваш код - что вы ожидаете? Какой смысл использовать две отдельные, но параллельные базы кода? – Rob

+0

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

+0

Не совсем то, что вы ищете до TFS, но этот пакет добавит шаг компиляции, который удаляет Jetbrains.Annotations во время сборки. Таким образом, по крайней мере, вы не будете зависеть от сборки, а встроенные DLL не будут иметь никаких признаков того, что вы использовали Аннотации: https://github.com/Fody/JetBrainsAnnotations –

ответ

7

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

24

Вы не можете заставить TFS «игнорировать» изменение. Такова цель TFS - отслеживать все изменений.

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

  • создать ветвь, из которой вы в настоящее время работаете (давайте назовем его «BranchA»), а затем сделать все изменения аннотаций в том, что новый филиал («BranchB»), регулярно проверяя их
  • , если это займет некоторое время (дни, недели), чтобы обеспечить регулярное слияние с BranchA на BranchB
  • , когда вы думаете, что закончили выполните окончательное слияние из BranchA в BranchB. Если вы перетащили все новые методы, убедитесь, что вы их аннотируете. Повторите этот шаг, если вы внесли изменения.
  • слить все изменения из BranchB обратно в BranchA. Это приведет к объединению всех ваших небольших изменений в один большой набор проверок/изменений в BranchA. Если вы регулярно делаете регулярные слияния от BranchA до BranchB, это должно быть проблемой, даже если прошло много времени с тех пор, как вы начали работу по оформлению.
8

Короче говоря, вы не должны, ближайшая функция - tfignore, но это игнорирует весь файл.

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

External tool used inside VS Здесь вы можете увидеть, как добавить инструменты в меню «Инструменты» и отправить ему аргументы.

TFS API Example В этом примере показано, как использовать TFS API. Существует «workspace.AddIgnoreFileExclusion()», но здесь у меня нет TFS, поэтому я проверю, как проигнорировать файлы позже.

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

6

Я согласен с другими ответами, что такая функция официально не поддерживается Microsoft.

Но вы также можете перезаписать TFVC в a few ways, если это действительно необходимо. Вы можете написать свой собственный Visual Studio plug-in или Source Control VSPackage.

1

Если ваша главная цель - написать лучший код с помощью ReSharper, сообщив вам, следует ли ожидать нулевых значений или создавать другие предупреждения, и вы не хотите беспокоить других членов команды, я бы предложил вам рассмотреть используя External Annotations вместо атрибутов аннотации в коде.

Затем вы можете решить, хотите ли вы зафиксировать эти файлы или сохранить их локально. И даже если вы зафиксируете свой код, все равно будет чистым без этих дополнительных атрибутов.

По крайней мере, я бы попробовал.

 Смежные вопросы

  • Нет связанных вопросов^_^