使用正则表达式批量替换冲突

在使用git 时出现 文件大面积冲突 为避免麻烦 使用正则表达式进行批量替换

总代码如下

1
2

(<<<<<*\sHEAD([\n]*)|====*\s(.[\n]*)(.*[\n])+.*(4ec633df87926745360d68b4aad6e5dd06c17400))

#拆分1 只匹配头部 也就是 <<<< HEAD 部分

1
2

<<<<<*\sHEAD([\n]*)

拆分2 匹配尾部

1
2
3
4

====*\s(.[\n]*)(.*[\n])+.*(4ec633df87926745360d68b4aad6e5dd06c17400)

高亮部分为你的 版本号 根据自己的情况定

此为高亮部分 4ec633df87926745360d68b4aad6e5dd06c17400 可替换为你想要的任意类型

php 之 composer 的JSON包的规范一

JSON shema

可以看这里 composer.json

ROOT 包

“root 包”是指由 composer.json 定义的在你项目根目录的包。这是 composer.json定义你项目所需的主要条件。(简单的说,你自己的项目就是一个 root 包)

  • [x] 注意: 一个资源包是不是“root 包”,取决于它的上下文。 例:如果你的项目依赖 monolog 库,那么你的项目就是“root 包”。 但是,如果你从 GitHub 上克隆了 monolog 为它修复 bug, 那么此时 monolog 就是“root 包”。

属性


包名 name

包的名称,它包括供应商名称和项目名称,使用 /分隔。
例:

  • monolog/monolog
  • prs/log

描述 description

对于包的描述信息

版本 version

非必需,建议忽略 规范 符合 'x.y.z' or vx.y.z 后缀可加 -dev -alpha -patch -beta -RC 并且可附带数字
例:

  • 1.0.1
  • 3.0.1-beta1
  • 3.0.2-dev
  • 2.0.1-alpha3
  • [x] 注意: Packagist 使用 VCS 仓库, 因此 version 定义的版本号必须是真实准确的。 自己手动指定的 version,最终有可能在某个时候因为人为错误造成问题。

类型 type

composer 支持的类型如下:

  • library: 这是默认类型,它会简单的将文件复制到 vendor 目录。
  • project: 这表示当前包是一个项目,而不是一个库。例:框架应用程序 Symfony standard edition,内容管理系统 SilverStripe installer 或者完全成熟的分布式应用程序。使用 IDE 创建一个新的工作区时,这可以为其提供项目列表的初始化。
  • metapackage: 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。因此这种安装类型并不需要一个 dist 或 source。
  • composer-plugin: 一个安装类型为 composer-plugin 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。

自定义案例

关键词 keywords

包含相关的关键词的数组。这些可用于搜索和过滤。
例:

  • logging
  • events
  • database
  • templating

项目主页 homepage

该项目的地址: 如 http://127.0.0.1/

版本发布时间 time

必须符合 YYYY-MM-DDYYYY-MM-DD HH:MM:SS 格式

许可协议 license

包的许可协议,它可以是一个字符串或者字符串数组。
例:

  • LGPL-2.1
  • JSON
  • Apache-2.0
  • zlib
  • WXwindos
  • PHP-3.0.1
  • MIT
    参见 许可协议
    CODE:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
    "license": "MIT"
    }
    {
    "license": [
    "PHP-3.0.1",
    "PHP-3.0.3"
    ]
    }
    {
    "license": "(PHP-3.0.1 or PHP-3.0.3)"
    }

作者 author

包的作者,是一个数组
属性如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"authors": [
{
"name": "yang l",
"email": "youremail@gmail.com",
"homepage": "http://www.yourdomain.com",
"role": "Developer"
},
{
// 此处可增加额外的作者 格式同上
}
]
}

支持 support

包的作者,是一个数组
属性如下:

  • email: 项目支持 email 地址。
  • issues: 跟踪问题的 URL 地址。
  • forum: 论坛地址。
  • wiki: Wiki 地址。
  • irc: IRC 聊天频道地址,类似于 irc://server/channel。
  • source: 网址浏览或下载源
    1
    2
    3
    4
    5
    6
    {
    "support": {
    "email": "support@example.org",
    "irc": "irc://irc.freenode.org/composer"
    }
    }
1
2
3
4
5
{
"require": {
"monolog/monolog": "1.0.*"
}
}

例:如果你想允许依赖一个不稳定的包,你可以在一个包的版本约束后使用它,或者是一个空的版本约束内使用它。

1
2
3
4
5
6
{
"require": {
"monolog/monolog": "1.0.*@beta",
"acme/foo": "@dev"
}
}

如果你的依赖之一,有对另一个不稳定包的依赖,你最好在 require 中显示的定义它,并带上足够详细的稳定性标识。

1
2
3
4
5
6
{
"require": {
"doctrine/doctrine-fixtures-bundle": "dev-master",
"doctrine/data-fixtures": "@dev"
}
}

require 和 require-dev 还支持对 dev(开发)对dev 版本的明确引用 以确保它们被锁定到一个给定的状态,即使你运行了更新命令。你只需要明确一个开发版本号,并带上诸如 # 的标识

1
2
3
4
5
6
{
"require": {
"monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7",
"acme/foo": "1.0.x-dev#abc123"
}
}

php 之 composer 的JSON包的规范二

composer.json 包详解二

composer 自动加载器 及 资源库 配置等

require

必须的软件包列表,除非这些依赖被满足,否则不会完成安装。

require-dev (root-only)

这个列表是为开发或测试等目的,额外列出的依赖。“root 包”的 require-dev 默认是会被安装的。然而 install 或 update 支持使用 –no-dev 参数来跳过 require-dev 字段中列出的包。

conflict

此列表中的包与当前包的这个版本冲突。它们将不允许同时被安装。

replace

这个列表中的包将被当前包取代。这使你可以 fork 一个包,以不同的名称和版本号发布,同时要求依赖于原包的其它包,在这之后依赖于你 fork 的这个包,因为它取代了原来的包。

provide

由该包提供的其他包的列表。这主要是有用的常见的接口。一个包可以依靠一些虚拟日志包

suggest

建议安装的包 给你的用户一个建议,他们可以添加更多的包。

1
2
3
4
5
{
"suggest": {
"monolog/monolog": "Allows more advanced logging of the application flow"
}
}

自动加载 autoload

PHP autoloader 的自动加载映射。

PSR-0

1
2
3
4
5
6
7
8
9
{
"autoload": {
"psr-0": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": "src/",
"Vendor_Namespace_": "src/"
}
}
}

PSR-4

1
2
3
4
5
6
7
8
{
"autoload": {
"psr-4": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": ""
}
}
}

Classmap

1
2
3
4
5
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}

文件Files

如果你想要明确的指定,在每次请求时都要载入某些文件,那么你可以使用 ‘files’ autoloading。通常作为函数库的载入方式(而非类库)。

实例:

1
2
3
4
5
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}

加载开发版本 只在root包下 autoload-dev (root-only)

1
2
3
4
5
6
7
8
{
"autoload": {
"psr-4": { "MyLibrary\\": "src/" }
},
"autoload-dev": {
"psr-4": { "MyLibrary\\Tests\\": "tests/" }
}
}

include-path

1
2
3
{
"include-path": ["lib/"]
}

精确自动加载组件的目标目录 target-dir

1
2
3
4
5
6
{
"autoload": {
"psr-0": { "Symfony\\Component\\Yaml\\": "" }
},
"target-dir": "Symfony/Component/Yaml"
}

minimum-stability (root-only) 最低稳定版本

这定义了通过稳定性过滤包的默认行为。默认为 stable(稳定)。因此如果你依赖于一个 dev(开发)包,你应该明确的进行定义。

对每个包的所有版本都会进行稳定性检查,而低于 minimum-stability 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 require 或 require-dev 中设定(请参考 Package links)。

可用的稳定性标识(按字母排序):dev、alpha、beta、RC、stable。

使用更加稳定的版本prefer-stable (root-only)

当此选项被激活时,Composer 将优先使用更稳定的包版本。

使用 “prefer-stable”: true 来激活它。

repositories (root-only)

使用自定义的包资源库 如果package list 没有的话 可以使用此项
只能在“Root包”的 composer.json 中定义。附属包中的 composer.json 将被忽略。
支持类型:

  • composer: 一个 composer 类型的资源库,是一个简单的网络服务器(HTTP、FTP、SSH)上的 packages.json 文件,它包含一个 composer.json 对象的列表,有额外的 dist 和/或 source 信息。这个 packages.json 文件是用一个 PHP 流加载的。你可以使用 options 参数来设定额外的流信息。
  • vcs: 从 git、svn 和 hg 取得资源。
  • pear: 从 pear 获取资源。
  • package: 如果你依赖于一个项目,它不提供任何对 composer 的支持,你就可以使用这种类型。你基本上就只需要内联一个 composer.json 对象。
    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    {
    "repositories": [
    {
    "type": "composer",
    "url": "http://packages.example.com"
    },
    {
    "type": "composer",
    "url": "https://packages.example.com",
    "options": {
    "ssl": {
    "verify_peer": "true"
    }
    }
    },
    {
    "type": "vcs",
    "url": "https://github.com/Seldaek/monolog"
    },
    {
    "type": "pear",
    "url": "http://pear2.php.net"
    },
    {
    "type": "package",
    "package": {
    "name": "smarty/smarty",
    "version": "3.1.7",
    "dist": {
    "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
    "type": "zip"
    },
    "source": {
    "url": "http://smarty-php.googlecode.com/svn/",
    "type": "svn",
    "reference": "tags/Smarty_3_1_7/distribution/"
    }
    }
    }
    ]
    }
  • [x] 注:顺序 自上而下 即下面的资源会覆盖上面的 如果有的话

配置项config (root-only)

支持以下选项:

  • process-timeout: 默认为 300。处理进程结束时间,例如:git 克隆的时间。Composer 将放弃超时的任务。如果你的网络缓慢或者正在使用一个巨大的包,你可能要将这个值设置的更高一些。
  • use-include-path: 默认为 false。如果为 true,Composer autoloader 还将在 PHP include path 中继续查找类文件。
  • preferred-install: 默认为 auto。它的值可以是 source、dist 或 auto。这个选项允许你设置 Composer 的默认安装方法。
  • github-protocols: 默认为 [“git”, “https”, “ssh”]。从 github.com 克隆时使用的协议优先级清单,因此默认情况下将优先使用 git 协议进行克隆。你可以重新排列它们的次序,例如,如果你的网络有代理服务器或 git 协议的效率很低,你就可以提升 https 协议的优先级。
  • github-oauth: 一个域名和 oauth keys 的列表。 例如:使用 {“github.com”: “oauthtoken”} 作为此选项的值, 将使用 oauthtoken 来访问 github 上的私人仓库,并绕过 low IP-based rate 的 API 限制。 关联知识 关于如何获取 GitHub 的 OAuth token。
  • vendor-dir: 默认为 vendor。通过设置你可以安装依赖到不同的目录。
  • bin-dir: 默认为 vendor/bin。如果一个项目包含二进制文件,它们将被连接到这个目录。
  • cache-dir: unix 下默认为 $home/cache,Windows 下默认为 C:\Users\\AppData\Local\Composer。用于存储 composer 所有的缓存文件。相关信息请查看 COMPOSER_HOME。
  • cache-files-dir: 默认为 $cache-dir/files。存储包 zip 存档的目录。
  • cache-repo-dir: 默认为 $cache-dir/repo。存储 composer 类型的 VCS(svn、github、bitbucket) repos 目录。
  • cache-vcs-dir: 默认为 $cache-dir/vcs。此目录用于存储 VCS 克隆的 git/hg 类型的元数据,并加快安装速度。
  • cache-files-ttl: 默认为 15552000(6个月)。默认情况下 Composer 缓存的所有数据都将在闲置6个月后被删除,这个选项允许你来调整这个时间,你可以将其设置为0以禁用缓存。
  • cache-files-maxsize: 默认为 300MiB。Composer 缓存的最大容量,超出后将优先清除旧的缓存数据,直到缓存量低于这个数值。
  • prepend-autoloader: 默认为 true。如果设置为 false,composer autoloader 将不会附加到现有的自动加载机制中。这有时候用来解决与其它自动加载机制产生的冲突。
  • autoloader-suffix: 默认为 null。Composer autoloader 的后缀,当设置为空时将会产生一个随机的字符串。
    optimize-autoloader Defaults to false. Always optimize when dumping the autoloader.
  • github-domains: 默认为 [“github.com”]。一个 github mode 下的域名列表。这是用于GitHub的企业设置。
  • notify-on-install: 默认为 true。Composer 允许资源仓库定义一个用于通知的 URL,以便有人从其上安装资源包时能够得到一个反馈通知。此选项允许你禁用该行为。
  • discard-changes: 默认为 false,它的值可以是 true、false 或 stash。这个选项允许你设置在非交互模式下,当处理失败的更新时采用的处理方式。true 表示永远放弃更改。”stash” 表示继续尝试。Use this for CI servers or deploy scripts if you tend to have modified vendors.
    1
    2
    3
    4
    5
    {
    "config": {
    "bin-dir": "bin"
    }
    }

scripts (root-only)

Composer 允许你在安装过程中的各个阶段挂接脚本。

更多细节和案例请查看 脚本

extra

任意的,供 scripts 使用的额外数据。.

这可以是几乎任何东西。若要从脚本事件访问处理程序,你可以这样做:

$extra = $event->getComposer()->getPackage()->getExtra();
可选。

bin

该属性用于标注一组应被视为二进制脚本的文件,他们会被软链接到(config 对象中的)bin-dir 属性所标注的目录,以供其他依赖包调用。

详细请查看 Vendor Binaries

rchive

这些选项在创建包存档时使用。

支持以下选项:

exclude: 允许设置一个需要被排除的路径的列表。使用与 .gitignore 文件相同的语法。一个前导的(!)将会使其变成白名单而无视之前相同目录的排除设定。前导斜杠只会在项目的相对路径的开头匹配。星号为通配符。
实例:

{
“archive”: {
“exclude”: [“/foo/bar”, “baz”, “/*.test”, “!/foo/bar/baz”]
}
}

php 之 composer 的命令二

##依赖性检测 depends

说明:
depends 命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们

1
2
3
4
5
composer depends  psr/log

参数 如下

depends [-r|--recursive] [-t|--tree] [--] <package> [<constraint>]

##有效性检测 validate

说明:
在提交 composer.json 文件,和创建 tag 前,你应该始终运行 validate 命令。它将检测你的 composer.json 文件是否是有效的

1
2
3
4
5
php composer.phar validate

参数:

--no-check-all: Composer 是否进行完整的校验。

##依赖包状态检测 status
说明:
如果你经常修改依赖包里的代码,并且它们是从 source(自定义源)进行安装的,那么 status 命令允许你进行检查,如果你有任何本地的更改它将会给予提示。

1
2
3
4
composer status
composer status -v
composer status -vv
composer status -vvv

##自我更新composer self-update or selfupdate
说明:
将 Composer 自身升级到最新版本,只需要运行 self-update 命令。它将替换你的 composer.phar 文件到最新版本

1
2
3
4
5
6
7
8
composer self-update
<!-- 更新到特定的版本 -->

comoser self-update 1.0.0-alpha7

参数:
--rollback (-r): 回滚到你已经安装的最后一个版本。
--clean-backups: 在更新过程中删除旧的备份,这使得更新过后的当前版本是唯一可用的备份。

##更改配置 config
说明:
config 命令允许你编辑 Composer 的一些基本设置,无论是本地的 composer.json 或者全局的 config.json 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
composer config --list

composer config secure-http false

composer config github-domains [github.com,github.cn]

<!-- 修改包来源 -->
comoser config repositories.foo vcs http://github.com/foo/bar

参数:
--global (-g):
<!-- 操作位于 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定该参数,此命令将影响当前项目的 composer.json 文件,或 --file 参数所指向的文件。 -->
--editor (-e):
<!-- 使用文本编辑器打开 composer.json 文件。默认情况下始终是打开当前项目的文件。当存在 --global 参数时,将会打开全局 composer.json 文件。 -->
--unset:
<!-- 移除由 setting-key 指定名称的配置选项。 -->
--list (-l):
<!-- 显示当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。 -->
--file="..." (-f):
<!-- 在一个指定的文件上操作,而不是 composer.json。注意:不能与 --global 参数一起使用。 -->

##创建项目 create-project

说明:
你可以使用 Composer 从现有的包中创建一个新的项目。这相当于执行了一个 git clone 或 svn checkout 命令后将这个包的依赖安装到它自己的 vendor 目录。

此命令有几个常见的用途:

你可以快速的部署你的应用。
你可以检出任何资源包,并开发它的补丁。
多人开发项目,可以用它来加快应用的初始化。
要创建基于 Composer 的新项目,你可以使用 “create-project” 命令。传递一个包名,它会为你创建项目的目录。你也可以在第三个参数中指定版本号,否则将获取最新的版本。

如果该目录目前不存在,则会在安装过程中自动创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
composer create-project lavarel/laravel path 2.2.*
composer create-project --prefer-dist laravel/laravel blog

参数:
--repository-url: 提供一个自定义的储存库来搜索包,这将被用来代替 packagist.org。可以是一个指向 composer 资源库的 HTTP URL,或者是指向某个 packages.json 文件的本地路径。
--stability (-s): 资源包的最低稳定版本,默认为 stable。
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dev: 安装 require-dev 字段中列出的包。
--no-install: 禁止安装包的依赖。
--no-plugins: 禁用 plugins。
--no-scripts: 禁止在根资源包中定义的脚本执行。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--keep-vcs: 创建时跳过缺失的 VCS 。如果你在非交互模式下运行创建命令,这将是非常有用的。

##打印自动加载 dump-autoload
说明:
某些情况下你需要更新 autoloader,例如在你的包中加入了一个新的类。你可以使用 dump-autoload 来完成,而不必执行 install 或 update 命令。
此外,它可以打印一个优化过的,符合 PSR-0/4 规范的类的索引,这也是出于对性能的可考虑。在大型的应用中会有许多类文件,而 autoloader 会占用每个请求的很大一部分时间,使用 classmaps 或许在开发时不太方便,但它在保证性能的前提下,仍然可以获得 PSR-0/4 规范带来的便利。

1
2
3
4
composer dump-autoload
参数:
--optimize (-o): 转换 PSR-0/4 autoloading 到 classmap 获得更快的载入速度。这特别适用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。
--no-dev: 禁用 autoload-dev 规则。

#查看许可协议 licenses

1
2
3
composer licenses
composer licenses --format=json
composer license --format=json --no-dev

#执行脚本 run-script

1
2
composer run-script  testscript
<!-- 说明 关于脚本请看后面的文章 -->

#诊断 diagnose
说明:
如果你觉得发现了一个 bug 或是程序行为变得怪异,你可能需要运行 diagnose 命令,来帮助你检测一些常见的问题

1
composer diagnose

#归档 archive
说明:
此命令用来对指定包的指定版本进行 zip/tar 归档。它也可以用来归档你的整个项目,不包括 excluded/ignored(排除/忽略)的文件。

1
2
3
4
composer archive vendor/package 2.0.21 --format=zip
参数:
--format (-f): 指定归档格式:tar 或 zip(默认为 tar)。
--dir: 指定归档存放的目录(默认为当前目录)。

你是本站第位访客 本站访客数人次
Fork me on GitHub