我有自己的代码库,希望将其提供给开发环境。这个想法是,在任何开发项目中,我都可以随意升级或降级我的库。
Composer似乎是实现此目的的理想工具,但是我发现我必须与该工具抗衡才能实现我想要的功能。
我想完成的事情:
最后一点很重要:主机中所做的任何事情都是官方生产代码。当我将其推送到生产服务器时,生产代码恰好是在主服务器中提交的代码。
Composer显然不同意这种想法,因为他们坚持认为您不应在/ vendor中进行任何操作。这意味着您显然也必须在生产服务器上运行composer。 由于公司的限制,现在对我来说这不是一个选择 。
所以我遇到的问题是,作曲家会自动在我的库中克隆一个.git文件夹。这样可以防止我的应用程序的git看到该文件夹。
作曲者的文档说明:
如果您确实必须执行此操作,则可以选择以下几种方式:
- 仅限于安装带标签的发行版(无开发版本),这样您只能进行压缩安装,并避免git“ submodules”出现问题。
- 在配置中使用--prefer-dist或将preferred-install设置为dist。
- 安装后删除每个依赖项的.git目录,然后可以将它们添加到git存储库中。您可以使用ZSH中的
rm -rf vendor/**/.git
或Bash中的find vendor/ -type d -name ".git" -exec rm -rf {} \;
来做到这一点。但这意味着您必须在运行composer更新之前从磁盘上删除这些依赖项。- 添加.gitignore规则(
/vendor/**/.git
)以忽略所有供应商.git文件夹。这种方法不需要在运行作曲家更新之前先从磁盘上删除依赖项。
到目前为止,对我唯一有用的是选项3,手动删除.git
文件夹。没关系,除非我担心某天的2:00有点困,否则如果我删除了错误的.git
... kes!
我尝试过的事情:
.gitignore,已提交(最后两个条目只是出于绝望)
/vendor/**/.git
/vendor/**/.git/**
vendor/**/.git
composer.json
{
"name": "crud-package/project-name",
"description": "Loading just CRUD package",
"require": {
"crud/core":"^1.3.1"
},
"repositories": [
{
"type":"vcs",
"url":"//path/to/composer_projects/crud"
}
],
"autoload": {
"classmap": [
"vendor/crud/core"
]
},
"config": {
"preferred-install": "dist"
}
}
然后使用
安装$ cmd //c composer update --prefer-dist
Loading composer repositorUpdating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals
- Installing crud/core (v1.3.2): Cloning b734c2dfb6 from cache
Writing lock file
Generating autoload files
我是否缺少明显的东西,为什么唯一起作用的是#3?还有什么我可以尝试的吗?如果我无法让作曲家不要将.git文件夹放在那里,怎么办?
我希望的解决方案是让git忽略.git文件夹以及我真正不需要的所有composer自动加载内容。