如何跨多个 Git 存储库共享 ReSharper 配置

问题描述 投票:0回答:1

我正在跨不同的 Git 存储库处理多个项目,并且我希望在所有这些项目之间保持一致的 ReSharper 配置。为了实现这一目标,我正在考虑将 ReSharper 配置文件存储在公共 Git 存储库中,并将它们与其他存储库同步。

有没有办法设置我的环境,以便我可以:

  1. 将 ReSharper 配置文件存储在中央 Git 存储库中。

  2. 将这些配置文件与多个其他 Git 存储库同步。

理想情况下,我想要一个解决方案,每当中央存储库中发生更改时,它会自动更新其他存储库中的配置文件。没有 git 子模块。

c# .net resharper rider
1个回答
0
投票

没有超级方便的方法,但让我描述一下我们以前的团队是如何解决这个问题的。

首先,我们有一个 Git 存储库(我们称之为

CodeStyle
),其中包含应共享的所有设置:

CreateSymbolicLinkForEditorconfig.ps1
MyCompany.DotSettings
.editorconfig
ReSpeller/de.aff
ReSpeller/de.dic

每个开发人员都会克隆这个存储库,例如进入

C:\source\CodeStyle

现在我们有不同的应用程序,都位于其存储库中:

  • MyApp1
  • MyApp2

它们将在设置存储库旁边克隆到

C:\source
,为我们提供以下结构:

  • C:\source\MyApp1
  • C:\source\MyApp2

R# 设置文件允许您通过相对路径引用其他设置文件。特定于存储库的 R# 设置

C:\source\MyApp1\MyApp1.sln.DotSettings
可能如下所示:

<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=15C315CEAAF9FC4EA4785B81F2986594/AbsolutePath/@EntryValue">..\Codestyle\MyCompany.DotSettings</s:String>
    <s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=15C315CEAAF9FC4EA4785B81F2986594/RelativePath/@EntryValue">..\Codestyle\MyCompany.DotSettings</s:String>
    <s:Boolean x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=15C315CEAAF9FC4EA4785B81F2986594/@KeyIndexDefined">True</s:Boolean>
    <s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File15C315CEAAF9FC4EA4785B81F2986594/@KeyIndexDefined">True</s:Boolean>
    <s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File15C315CEAAF9FC4EA4785B81F2986594/RelativePriority/@EntryValue">1</s:Double>

如您所见,特定于存储库的 R# 配置

C:\source\MyApp1\MyApp1.sln.DotSettings
引用了其他存储库中的共享
MyCompany.DotSettings

唯一需要注意的是,您对目录结构做出某些假设和隐式要求(例如,在本地将克隆的代码风格目录从

C:\source\CodeStyle
重命名为
C:\source\CodeStyleSettings
)将破坏这种方法。然而,我们更喜欢有一个共享的 R# 设置文件;因此,这种妥协对我们来说是可以的。

另一种方法是使用 Git 子模块 - 这可以让您摆脱前面描述的隐式设置的目录结构问题。

您可能想知道文件

CreateSymbolicLinkForEditorconfig.ps1
是关于什么的。由于
.editorconfig
允许基于目录的继承(即
C:\source\.editorconfig
将自动应用于
C:\source
中的所有目录),因此我们需要以某种方式将文件
C:\source\CodeStyle\.editorconfig
“移动”到
C:\source\.editorconfig
一个目录,以便所有其他目录repos 可以领取。
为了简单起见,我们使用 PowerShell 脚本创建符号链接
CreateSymbolicLinkForEditorconfig.ps1
:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Host "Running elevated..."
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
}

$sourceFile = "$PSScriptRoot\.editorconfig"
$destinationLink = "$PSScriptRoot\..\.editorconfig"

if (Test-Path -Path $destinationLink) {
    Write-Host "File '$destinationLink' already exists"
}
else {
    New-Item -ItemType SymbolicLink -Path $destinationLink -Value $sourceFile
    Write-Host "Created Symbolic Link '$destinationLink' pointing to '$sourceFile'"
}

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.