背景 在我们的网络共享中,我们有一些裸git存储库,用于在开发期间进行文件交换(和版本控制等)。不幸的是,经常发生这样的情况:没有参与开发请求的人只能访问该存储库的一小部分文件。这些同事通常没有可用的git。
我需要什么 因此,我希望与裸存储库并行提供我裸存储库的工作文件的最新副本。这些工作文件不打算进行更改。
途径吗 你知道如何巧妙地解决这个问题吗?
我知道每次更新存储库时我都可以复制整个文件,但这在时间和流量上都很昂贵。这似乎是一个基本的东西......
答案 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
这解决了上述所有问题: