我知道我朋友的一些ChangeList。我想将此CL编号传递给Bash脚本,该脚本将为patch
程序生成一个diff文件读取(将重新创建git repo中的更改)。
到目前为止,我有这个:
function p4_shelved_cl_to_diff()
{
p4 describe -S -du $1 > p4_diff.patch
}
它生成diff,但标题是p4格式:
==== //p4_repo/dir_in_repo/dir/file.cpp#123 (text) ===
而他们应该在
--- dir/file.cpp
+++ dir/file.cpp
所以我正在寻找的是一种特殊的p4语法(广泛搜索,检查p4手册 - 小希望)或而不是sed / awk /任何可以为我做更改的脚本。
任何想法,或者有人已经写过这个想法?
答案 0 :(得分:2)
此替换适用于您的示例:
$ sed 's|^====.*/\([^/]*/[^#]*\).*===$|--- \1\n+++ \1|' infile
--- dir/file.cpp
+++ dir/file.cpp
它适用于以====
开头和结尾的行(实际上以===
结尾,但我相信这只是问题的一个错字,它也适用于以{{1}结尾的行})。
它捕获倒数第二个====
和/
之间的所有内容,然后在单独的行中添加#
和---
。
请注意,我没有查看p4 diff标头的一般格式,因此在其他情况下这可能会中断 - 更好的整体解决方案是修复生成错误标头的内容。