2017-01-17 24 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在這裏,所以我會驗證如何在稍後忽略這些文件。

現在根據我的經驗,我不希望檢查這些變化的唯一原因是避免與團隊發生衝突。 如果我在使用註釋的某些練習中看到很多價值,我會與團隊交談,讓他們購買使用註釋的想法,這樣每個人都會使用註釋,並且很快每個文件都會有註釋不會有任何衝突。

1

如果您的主要目標是在ReSharper的幫助下告訴您是否應該預期空值或產生其他警告並且您不想用其打擾其他團隊成員,那麼我會建議您考慮使用External Annotations而不是代碼中的註釋屬性。

然後,您可以決定是否要提交這些文件或將它們保存在本地。即使你提交你的代碼仍然是乾淨的,沒有這些額外的屬性。

至少我會試試看。