如何提供与裸 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 工作的中央存储库
- 更新是增量完成的
背景 在我们的网络共享中,我们有一些裸露的 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 工作的中央存储库
- 更新是增量完成的