使用网络共享作为Visual Studio 2015 Git Remote

时间:2016-04-29 05:27:38

标签: git visual-studio-2015

我觉得我错过了一些东西,因为这种需求应该是非常普遍的......

假设这种情况:

  • 五位开发人员,每位开发人员都使用Visual Studio 2015运行Windows 10工作站。
  • 一个联网的Windows 2012 Server文件服务器。

使用包含IP地址的UNC路径的所有五个开发人员都可以使用Windows Server(例如" \ 1.2.3.4 \ C $ \ repo \ temp")。

我想要做的就是在目标路径\ 1.2.3.4 \ C $ \ repo \ temp中的文件服务器上放置一个Visual Studio解决方案。一旦解决方案存在,我希望每个开发人员从中克隆并使用本地存储库进行开发,然后再将更改推送回文件服务器。

以下是我的问题:

  1. 在这种情况下,文件服务器在技术上并不是一个"远程回购"关于五个开发者工作站?
  2. 如果(1)的答案为是,那么似乎必须将Visual Studio中的远程存储库定义为https:// targets(UNC路径不起作用)。可以将远程仓库定义为网络上的UNC路径吗?
  3. 也许是术语"远程回购"在Git的说法中是非常具体的...这样远程Git仓库必须是第三方仓库,如GitHub,或其他一些基于互联网的端点。但这似乎并不合适。我不明白为什么远程仓库不能只是本地工作站上的文件路径或本地网络上的任何其他可用路径。

    在我的例子中,文件服务器可能不是技术上的远程回购&#34 ;;如果它实际上是一个"本地回购"它对我没问题。在网络上 - 如果是这样的话,我会学会将其称为本地回购...最终,我所关心的是文件服务器将保持团队的能力。 "主"分支,并将用于创建构建。所有开发人员都会回到文件服务器仓库。

    如何设置这样的联网文件服务器并将其用作我团队的主要回购?如果您不了解Visual Studio 2015实现此目的的方法,那么我仍然会接受解释如何使用Git命令行工具完成此操作的答案......

2 个答案:

答案 0 :(得分:2)

当我在过去完成此操作时,我们使用了unix样式的UNC路径:ie://SERVERNAME/Share/repository.git并确保共享存储库是一个裸存储库(即:git init --bare repository.git)。将.git添加到存储库目录名称只是一个常见的约定,表明它是一个裸存储库。

非裸远程共享示例(git版本2.7.0.windows.1):

C:\Code>git ls-remote \\SERVER\c$\Code\Build
fatal: '\SERVER\c$\Code\Build' does not appear to be a git repository
fatal: Could not read from remote repository.

C:\Code>git ls-remote //SERVER/c$/Code/Build
ad081d35144157551e3728d6deadf19ae106ced0        HEAD
ad081d35144157551e3728d6deadf19ae106ced0        refs/heads/master
ad081d35144157551e3728d6deadf19ae106ced0        refs/remotes/origin/HEAD
ad081d35144157551e3728d6deadf19ae106ced0        refs/remotes/origin/master

鉴于对第一次尝试的响应很明显我们有一个引用问题,因此加倍反斜杠可以解决它 - 或切换到正斜杠。您可以使用file:// URL方案,但仍需要两个斜杠来指示UNC服务器部分:

C:\Code>git ls-remote file:////SERVER/c$/Code/Build
ad081d35144157551e3728d6deadf19ae106ced0        HEAD
ad081d35144157551e3728d6deadf19ae106ced0        refs/heads/master
ad081d35144157551e3728d6deadf19ae106ced0        refs/remotes/origin/HEAD
ad081d35144157551e3728d6deadf19ae106ced0        refs/remotes/origin/master

答案 1 :(得分:1)

当您创建一个中央存储库(将与其他用户共享)时,您应该使用--bare选项创建它:

git init --bare myrepo.git

这意味着没有创建工作目录,并且没有顶级.git目录(相反,.git文件夹中“通常”的内容将位于顶层)。 / p>

裸存储库要求用户使用clone / pull / fetch / push命令与存储库进行交互(而不是添加/提交与本地存储库交互)。

惯例是命名具有.git扩展名的裸存储库。虽然git本身并不关心,但很多工具都期望它。

因此,如果您在UNC路径上创建一个裸仓库,您应该可以直接使用它

\ 1.2.3.4 \ C $ \ X \ y.git

我可能会在服务器上显式共享该目录,以便您获得更好看的路径......