如何提供与裸git存储库并行的工作文件

时间:2016-01-13 08:18:15

标签: git file repository git-bare

背景 在我们的网络共享中,我们有一些裸git存储库,用于在开发期间进行文件交换(和版本控制等)。不幸的是,经常发生这样的情况:没有参与开发请求的人只能访问该存储库的一小部分文件。这些同事通常没有可用的git。

我需要什么 因此,我希望与裸存储库并行提供我裸存储库的工作文件的最新副本。这些工作文件不打算进行更改。

途径吗 你知道如何巧妙地解决这个问题吗?

我知道每次更新存储库时我都可以复制整个文件,但这在时间和流量上都很昂贵。这似乎是一个基本的东西......

2 个答案:

答案 0 :(得分:2)

您可以随时导出archive of a subfolder of a git repo(使用git archive):

git archive -o ../subarchive.zip HEAD:subdir

这样,您只需要复制一个(存档)文件。

您可以将其与收件后挂钩as I saw 3 years ago结合使用:
这允许在每次推送时存档,复制和解压缩存档,以便提出一个反映您的存储库的最新状态的文件夹结构。

答案 1 :(得分:1)

最后,我们使用以下解决方案:我们在服务器上有一个非裸镜像存储库,当我们的裸存储库更新时,我们通过联合更新脚本<​​/ strong>自动提取这些存储库(Windows ,批处理):

@echo off
:: define server pathes
set serverpath_bare=\\my_server_path\bare
set serverpath_mirror=\\my_server_path\mirror

:: make sure:
::  + your latest changes are committed to your local repository
::  + the repositories (bare and mirror) exist (e.g. via clone)
::  + ...

:: specify git server repository
git remote add server \%serverpath_bare%

:: update git server repository (1st: pull, 2nd: push)
git pull --stat server master
git push server master

:: mirroring: bare -> mirror
pushd %serverpath_mirror%
git remote add server \%serverpath_bare%
git pull --stat server master
popd

这解决了上述所有问题:

  • 我们可以将链接分发到镜像存储库
  • 我们可以使用裸存储库作为文件交换/联合工作的中央存储库
  • 以递增方式完成更新