我有一个存储在我的Dropbox中的git存储库(和工作目录),因此我可以在计算机之间来回移动而无需提交或存储(阅读:完全没有任何努力).除了一个令人烦恼的轻微烦恼外,这种方法很有效.
每隔一段时间,我就会让一台计算机处于完全承诺状态,只能在另一台计算机上运行,并发现git status报告发生了变化.这些变化不可避免地与权限有关.我不确定的是为什么?我认为它可能与Dropbox如何在同步计算机上写文件有关,但umask两个系统上的文件都设置为0002.我认为该值决定了Dropbox编写/更新的文件模式,但它不会我第一次错了.
我知道我可以告诉Git忽略文件模式,但这只是掩盖了问题.我真的很想了解它,所以我可以做出明智的决定如何继续.
谢谢.
UPDATE
所以这里有一个相当不错的代表性例子,即存储库完全包含在Dropbox中,它也会失去同步.在我们发言时,我的个人笔记本电脑正在为我的一个项目报告一个干净的工作目录:
$ git status
# On branch develop
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
不过,我的笔记本电脑报告了许多未跟踪的文件.让我再说一遍:未跟踪的文件.
$ git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# html/cake/console/libs/templates/
# ...4 more files...
# html/cake/tests/test_app/plugins/test_plugin/views/themed/
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
怎么可能?我的~/.gitignore文件也在两台机器上共享(并不是在忽略文件中排除任何这些路径).还有Git的另一个组件 - 或者Dropbox …
在 Elastic Beanstalk 上,使用基于 AWS Linux 2 的环境时,更新环境的环境属性(即环境变量)会导致所有生成的文件被删除。作为此更新的一部分,它也不会运行container_commands。
例如,我有一个 Django 项目,其中包含collectstatic容器命令:
05_collectstatic:
command: |
source $PYTHONPATH/activate
python manage.py collectstatic --noinput --ignore *.scss
Run Code Online (Sandbox Code Playgroud)
这会将静态文件收集到一个称为staticfiles部署一部分的文件夹中。但是当我更新环境变量时,staticfiles它被删除了。这会导致应用程序上的所有静态文件被破坏,直到我重新部署为止,这是极其不可取的。
在基于 AWS Linux 1 的环境中不会发生此行为。差异似乎在于,基于 AWS Linux 2 的环境/var/app/current在环境变量更改期间会替换该文件夹,而基于 AWS Linux 1 的环境则不会执行此操作。
我该如何解决?
我可以通过监视来验证在环境变量更改期间容器命令没有运行/var/log/cfn-init.log;没有新条目添加到此日志中。
滚动更新类型“禁用”和“不可变”都会发生这种情况。
即使我将环境命令转换为平台钩子,也会发生这种情况,尽管更新环境属性时钩子被列为正在运行。
在我看来,有两种潜在的解决方案,但我不知道其中任何一个的 Elastic Beanstalk 设置:
/var/app/current而不是替换它。有关容器命令的 Elastic Beanstalk 文档表示“仅在环境创建和部署期间执行仅领导者容器命令,而每次配置或更新实例时都会执行其他命令和服务器自定义操作。” 这是 Elastic Beanstalk 中的错误吗?
相关问题:EB:在配置更改时触发容器命令/部署脚本
部署 Elastic Beanstalk 应用程序时,我的一个挂钩因“权限被拒绝”而失败。我得到以下内容/var/log/eb-engine.log:
[信息] 运行平台挂钩:.platform/hooks/predeploy/collectstatic.sh
[错误] 执行命令 [app-deploy] - [RunAppDeployPreDeployHooks] 期间发生错误。停止运行该命令。错误:命令 .platform/hooks/predeploy/predeploy.sh 失败,错误 fork/exec .platform/hooks/predeploy/predeploy.sh:权限被拒绝
我该如何解决?