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

How to provide working files parallel to a bare git repository

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

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

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

我知道我可以在每次更新存储库时复制整个文件,但这会耗费时间和流量。这似乎是一件很基本的事情...

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

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

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

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

最后,我们使用以下解决方案:我们在服务器上有一个非裸镜像存储库,当我们的裸存储库更新时,我们通过联合 更新脚本(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

这解决了我们上述的所有问题:

  • 我们可以分发镜像仓库的链接
  • 我们可以使用裸存储库作为文件 exchange/joint 工作的中央存储库
  • 更新是增量完成的