我们有一个私人服务器来处理项目的回购。现在,按照我已经做过几次的过程,我突然发现其中一个模块上的"composer require"不包含应该在那里的.git/
文件夹。
"可能发生"我想,有人可能在创建repo时忘记包含它。然而,当去vendor/company/module
时,删除文件,做git init
+ git remote add origin ssh:repo.git
+ git pull
,我遇到git add .git/
什么也不做,只给我下面的警告:
$ git add .git/
warning: LF will be replaced by CRLF in .git/FETCH_HEAD.
The file will have its original line endings in your working directory.
error: Invalid path '.git/FETCH_HEAD'
error: unable to add .git/FETCH_HEAD to index
fatal: adding files failed
我想我会问,如果有人有一个想法,如何确保.git/
得到包括时拉(通过composer install/update/require
)从Satis服务器。
还没有找到一个解决方案搜索SO [git] folder
, [git] .git/ folder
或更多的变化在多个页面的结果。
答案来自同事。
当我安装包的时候,它只是一个包。因此,我使用composer require company/project/module
来安装它。
然而,当为一个项目安装整个vendor/
文件夹时,我们使用composer install --prefer-source -v
。
主要区别是使用--prefer-source
作为-v
标志,只是在终端中提供了更详细(详细)的输出。
我应该做的是composer require company/project/module --prefer-source
去查一下为什么这样做了;以下摘自文档:
——prefer-source:有两种方式下载包:source和dist。对于稳定版本,Composer将默认使用dist。源代码是一个版本控制存储库。如果——prefer-source是启用后,如果有源代码,Composer将从源代码安装。这是如果你想修复一个项目的错误,并获得一个本地git,它会很有用直接克隆依赖项
=========================
--prefer-source
的逆序是--prefer-dist
;以下是docs
——prefer-dist:——prefer-source的反转,如果可能的话,Composer将从dist安装。这可以大大加快构建时的安装速度通常不运行更新的服务器和其他用例供应商。这也是一种规避git问题的方法没有正确的设置。
关于在项目中为一个包(repo)设置不同的源代码的更多信息可以在这里找到。