我想为我们的项目准备一个开发VM,其中包含开发人员所需的所有内容(例如IDE,浏览器,工具,书签,GIT存储库等)
由于这是一个已经进行了很长时间的项目,因此存储库的大小已增长到大于3 GB,并且由于我们正在提供微服务,因此并非每个开发人员都需要拥有所有微服务。
为了使初始VM文件的大小保持较小,我想知道如何使用已配置的git存储库“准备” VM(以便开发人员可以通过“ git fetch && git checkout xy”轻松获取其代码)预先提供所有代码。
答案 0 :(得分:2)
您可以只创建所有回购文件夹并设置遥控器。 这是一个示例:
C:\Users\yogesh\Desktop>md test123
C:\Users\yogesh\Desktop>cd test123
C:\Users\yogesh\Desktop\test123>git init
Initialized empty Git repository in C:/Users/yogesh/Desktop/test123/.git/
C:\Users\yogesh\Desktop\test123>git remote add origin https://github.com/org1/repo1.git
对所有存储库执行此操作。这应该只创建一个空目录,其git repo配置为指向实际的远程仓库。 一旦开发人员需要设置存储库,他们就可以做:
git fetch
git checkout <branch>
答案 1 :(得分:0)
在$MIRROR
下对存储库进行镜像克隆。例如,$MIRROR
可以是/opt/
。 git clone <remote_repo> --mirror -- /opt/mirror_repo
。 $MIRROR
也可以位于已安装的设备中。
每个用户都使用/opt/mirror_repo
作为参考进行克隆。 cd /home/userA/;git clone <remote_repo> --reference=/opt/mirror_repo
,cd /home/userB/;git clone <remote_repo> --reference=/opt/mirror_repo
。
训练开发人员使用git worktree
签出对不同工作树的不同修订,而不是制作新的克隆。如果他们坚持使用新的克隆,请告诉他们总是添加--reference=/opt/mirror_repo
。
运行计划的任务以定期更新/opt/mirror_repo
,例如每天的00:00。 git --git-dir=/opt/mirror_repo fetch
。
参考回购可以减少网络和本地存储成本。
答案 2 :(得分:0)
您可以浅克隆存储库并跳过签出文件:
git clone --depth=1 --no-checkout <url/repo.git>
测试
普通克隆
git clone https://github.com/Microsoft/vscode.git
du -h --max-depth=0 vscode/.git
结果: 162M
浅克隆
git clone --depth 1 --no-checkout https://github.com/Microsoft/vscode.git
du -h --max-depth=0 vscode/.git
结果: 1100万