我有两台服务器,生产和开发.在生产服务器上,有两个应用程序和多个(6)数据库(MySQL),我需要将它们分发给开发人员进行测试.所有源代码都存储在开发服务器上的GitLab中,开发人员只能使用此服务器,并且无权访问生产服务器.当我们发布一个应用程序时,master会登录到生产环境并从Git中提取新版本.数据库很大(每个超过500M并且数不胜数),我需要尽可能简单地将它们分发给开发人员进行测试.
在将数据库(每个数据库)转储到单个文件的备份脚本之后,执行将每个数据库推送到其自己的分支的脚本.如果开发人员想要更新他的本地副本,则会拉出其中一个分支.
发现这个不起作用.
生产服务器上的Cron每天都会保存二进制日志,并将它们推送到该数据库的分支中.因此,在分支中,有每日更改的文件,开发人员会提取他没有的文件.当前的SQL转储将以另一种方式发送给开发人员.当存储库的大小变得太大时,我们将向开发人员发送完全转储并刷新存储库中的所有数据并从头开始.
我在理解基本的git概念时遇到了一些麻烦:/
在我的git控制的网站上尝试一些东西之前,我正在我的本地Windows机器上进行测试.
我有:
gittesting/repo1:
file.txt
ignoreme:
ignore.txt
Run Code Online (Sandbox Code Playgroud)
和
gittesting/repo2
file.txt
ignoreme:
ignore.txt
Run Code Online (Sandbox Code Playgroud)
Repo2是repo1的副本,并且已经跟踪了ignoreme.ignore.txt文件在repo2中被更改,但我想停止跟踪它并让git完全忽略它.问题是,如果我创建一个.gitignore文件并添加ignoreme,它已经太晚了,因为它已经被跟踪了,所以我不得不做git rm --cached ignore,但是它被标记为已删除,如果我将提交删除repo1,该目录将被删除而不是被单独留下..
把它们加起来:
我在网上看过,在IRC问过,并查看了相关的问题,但找不到办法做到这一点.我知道这个例子似乎微不足道,但这正是我需要在我的网站上做的事情,目录是论坛/缓存.
编辑:
这有点像黑客,我更喜欢更好的答案,但我最终做了:
cd repo2
echo "ignoreme" > .gitignore
echo "ignoreme/*" > .gitignore
git rm --cache -r ignoreme
git commit -m "Should ignore now"
cd ../repo1
mv ignoreme ignoreme2
git pull ../repo2
mv ignoreme2 ignoreme
Run Code Online (Sandbox Code Playgroud) 我的公司正在考虑实施Git,但我对于设置它的最佳方式有疑问.我们有3个站点,并计划使用Gerrit2来创建镜像.我们的存储库大约2GB,我们想开始添加二进制文件.我担心空间使用情况.我不介意所有版本的二进制文件都存储在少数几个位置,但我想确保它们不会陷入克隆操作.
我知道Git使用硬链接,但我认为只有在每个挂载上放置一个存储库副本时才能使用.是否有更好的选择,如果有,有什么权衡?我正在看的选项是"--shared"和"--reference".
关于Git和Dropbox的问题.我在线使用各种教程设置了Git和Dropbox.当我推高我的项目时,我注意到Dropbox文件夹非常小(在本地计算机上为1mb vs 4).我很确定实际文件没有被推送到dropbox.这是正常的吗?
谢谢!