簡體   English   中英

Visual Studio 2015中存儲“本地Git存儲庫”路徑的位置

[英]Where are “Local Git Repository” path stored in Visual Studio 2015

“本地Git存儲庫”路徑存儲在哪里? 在此處輸入圖片說明

我正在使用VS2017,經過一番挖掘,我想我可能已經找到Visual Studio用來存儲信息的位置。 轉到%AppData%\\ Microsoft \\ VisualStudio \\ 15.0_ {instanceId} \\ Team Explorer \\ TeamExplorer.config。

該文件中包含以下信息:

    <!--This configuration file specifies the previously-configured connection details for Team Foundation Server.-->
<server_list>
    <server url="http://mytfsserver:8080/tfs" current="yes">
        <collection guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx" url="http://mytfsserver:8080/tfs/defaultcollection" name="mytfsserver\DefaultCollection" current="yes" autoload="yes">
            <project projectUri="vstfs:///Classification/TeamProject/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx" name="MyTeamProject" capFlagsScc="1" supportsGit="yes" active="yes" team="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx">
                <repository type="2" name="MyGitRepo" guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx" activeClone="C:\Repos\MyGitRepo" isFork="False" />
            </project>
        </collection>
    </server>

基於此,您可以知道MyGitRepo存儲在C:\\ Repos \\ MyGitRepo中。 我可以找到的最佳方式來獲取Visual Studio實例ID是通過調用:

 "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -property instanceId

據我所知,Visual Studio可能與Git存儲元數據的位置沒有太大關系。 Git在每個本地存儲庫的根級別維護一個名為.git的隱藏文件夾。 它包含了所有在Git中使用的對象,引用,blob,hook等。

遵循Git公開的界面,如果您想查看與本地分支相對應的文件,則可以簽出該分支,或者可能簽出感興趣的單個文件。

Visual Studio 2015在注冊表中存儲GIT存儲庫的列表:

計算機\\ HKEY_CURRENT_USER \\軟件\\ Microsoft \\ VisualStudio \\ 14.0 \\ TeamFoundation \\ GitSourceControl \\ Repositories

好。 似乎Visual Studio 2019再次移動了此信息。 現在位於VS私有注冊表中。 基於這篇文章這篇文章 ,我使用以下代碼片段來查找本地Git存儲庫:

        const string GitRepoRoot = @"TeamFoundation\GitSourceControl\Repositories";
        ExternalSettingsManager ext = ExternalSettingsManager.CreateForApplication(@"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe");
        SettingsStore store = ext.GetReadOnlySettingsStore(SettingsScope.UserSettings);
        var keyNames = store.GetSubCollectionNames(GitRepoRoot);
        foreach (var key in keyNames)
        {
           Console.WriteLine(store.GetString($"{GitRepoRoot}\\{key}", "Name"));
           Console.WriteLine(store.GetString($"{GitRepoRoot}\\{key}", "Path"));
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM