git - 在 Composer 项目中使用 VCS 的最佳实践

标签 git cakephp version-control composer-php

我一直在使用 CakePHP 编写应用程序,它使用 Composer 从 GitHub 和其他来源安装插件和其他存储库。

到目前为止,我习惯将所有 vendor/ 文件添加到 Git 存储库,由于项目中安装了大量 composer,这极大地增加了存储库的大小。

根据使用 VCS 时涉及的最佳实践,vendor/ 目录会添加到 .gitignore 文件中,以防止推送到 VCS 存储库。

在我的 CakePHP 应用程序中,我需要某种在 GitHub 或其他来源上找不到的脚本。因此,我在

中创建了这些脚本文件
vendor/anuj-tbe/

导演。并在 composer.json 文件中,使用标记条目

"autoload": {
    "psr-4": {
        "App\\": "src",
        "AnujTbe\\": "vendor/anuj-tbe",
    }
},

并且还想将脚本文件推送到 VCS,因为稍后无法使用 Composer 下载它。

<强>1。 vendor/ 是放置自定义脚本文件的正确位置吗?
2.我可以忽略除我自己的目录之外的供应商文件吗?

最佳答案

是的,对于你的两个问题。

首先,VCS 中不应跟踪 vendor/,您还可以引用示例 .gitignore file对于 CakePHP。

其次,您可以将脚本文件放置在任何您喜欢的位置,包括 vendor/anuj-tbe/ 下。因此,您只需在 .gitignore 中排除 vendor/anuj-tbe 即可。

按照以下步骤从 VCS 中删除 vendor/,同时保留 vendor/anuj-tbe/

# After adding your scripts in vendor/anuj-tbe/
git add .
git commit -m 'add scripts'
touch .gitignore

确保.gitignore中包含以下内容:

vendor/*
!vendor/anuj-tbe

继续执行以下命令:

git rm vendor/* --cached -r
git add .
git commit -m 'remove vendor in VCS except vendor/anuj-tbe'

现在,除了 vendor/anuj-tbe 之外,vendor/ 中的所有文件和子文件夹在 VCS 中都会被忽略。

关于git - 在 Composer 项目中使用 VCS 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018007/

相关文章:

git - Maven Buildnumber 插件 - Git

linux - Phabricator:做arc diff时报错 "ARC: Cannot mix D and F"

git - 如何预览 git-pull?

svn - Tortoise SVN 搭建服务器和客户端环境

java - Mule:如何跟踪不可删除和不可移动的文件

git - 为什么 .gitignore 不忽略 .DS_Store?

git - 压缩提交时 merge 冲突破坏了我的提交信息

CakePHP 2.0.5 Auth 和用户模型递归问题

cakephp - 错误 : SQLSTATE[42S02]: Base table or view not found

mysql - cakephp mysql,自动增量 id 或 varchar 作为主键