Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 智能Mercurial捆绑包,带USB钥匙,从工作到家庭,反之亦然_Bash_Mercurial_Sed_Awk - Fatal编程技术网

Bash 智能Mercurial捆绑包,带USB钥匙,从工作到家庭,反之亦然

Bash 智能Mercurial捆绑包,带USB钥匙,从工作到家庭,反之亦然,bash,mercurial,sed,awk,Bash,Mercurial,Sed,Awk,这是一个我知道的常见问题,但我想把它带到下一个层次,我知道如何使用捆绑包,但要通过“hg日志”查看我最后的更改有点无聊,所以我想让它自动化,通过bash/awk检查日志,通过日期和邮件识别工作/家庭更改,(我在.hgrc中有不同的邮件,me@work及me@home) 我已经有了这个bash函数,但我必须手动通过基本修订: hgb () { hg bundle --base $1 ~/changes-`date +%Y-%m-%d-%H-%M`.hg } 所以我想说: mkwbundl

这是一个我知道的常见问题,但我想把它带到下一个层次,我知道如何使用捆绑包,但要通过“hg日志”查看我最后的更改有点无聊,所以我想让它自动化,通过bash/awk检查日志,通过日期和邮件识别工作/家庭更改,(我在.hgrc中有不同的邮件,me@work及me@home)

我已经有了这个bash函数,但我必须手动通过基本修订:

hgb () {
    hg bundle --base $1 ~/changes-`date +%Y-%m-%d-%H-%M`.hg
}
所以我想说:

mkwbundle #make work bundle for home
以及:

我刚刚开始学习awk/sed,但我已经看到了奇迹,在使用Python之前我会问,Python是我几乎所有东西的goto工具

更新:

对于反复无常的不可知论者来说,hg日志是这样的:

changeset:   28:f5200232460e
tag:         tip
user:        Manuel@home
date:        Tue Jan 15 23:39:57 2013 -0500
summary:     Adding DevTodo

changeset:   27:828dbba6830a
user:        Manuel@home
date:        Tue Jan 15 23:24:57 2013 -0500
summary:     login twig

changeset:   26:781477f86f6f
user:        Manuel@home
date:        Tue Jan 15 00:18:54 2013 -0500
summary:     UI mockup

changeset:   25:0c9365b200a8
user:        Manuel@home
date:        Mon Jan 14 23:50:22 2013 -0500
summary:     using twig blocks, remember reuse parent

changeset:   24:a1abfcfcefed
user:        Manuel@work
date:        Mon Jan 14 23:49:44 2013 -0500
summary:     smaller footer

changeset:   23:3cd12b7fb684
user:        Manuel@work
date:        Mon Jan 14 23:20:18 2013 -0500
summary:     test content width
我想在工作中得到基本修订版来制作一个捆绑包,比如说我在家里开始使用rev 24,做了4个更改,然后我在28,我想得到24作为基本修订版并制作一个捆绑包,然后在工作中也一样

编辑:根据下面的@dhunter注释,脚本的预期输出为:

24

我的理解是你想得到你的hgb()1美元的版本号

让我们举个例子。如果您在工作中运行
hg log

**(some information were omitted)**

changeset: xxx
user:me@work

changeset: xxx
user:someoneelse@work.com

changeset: xxx
user:me@work

changeset: 777:234asdf2342
user:me@work

changeset: xxx-border-xxx
user:me@home

changeset: xxxx
user:me@home
然后您可能需要使用
777
。这意味着从提示中检查用户,并从
me@home->@工作
me@work -> me@home
在上面的示例中,它是
变更集xxx边框xxx
。然后从中获取上一个变更集版本雷夫,你想做一个捆绑,并导入到你的家庭/工作回购。我希望我理解你的权利。但是你真的应该把你的问题说清楚

无论如何……当然可以由awk完成,以上面的例子为例(省略了分支机构、日期、摘要)

如果使用上述示例:

输出为:

777:234asdf2342
25:0c9365b200a8
如果尝试您问题中的示例,我们必须更改电子邮件地址,那么awk oneliner是:

hg log| awk -vRS="" 'NR==1{p=$0~/Manuel@work/?"Manuel@work":"Manuel@home";l=$2}NR>1 {if($0!~p){print l;exit}else l=$2}'
输出为:

777:234asdf2342
25:0c9365b200a8
我经常使用hg,但不使用捆绑。如果您真的想为您的--base获得24 rev.,那么请看以下内容:

 awk -vRS="" 'NR==1{p=$0~/Manuel@work/?"Manuel@work":"Manuel@home";}NR>1{if($0!~p){print $2;exit}}'
这将为您提供:

24:a1abfcfcefed
注意


如果自上次拆分后根本没有变更集ci,则不要使用awk行生成捆绑包。它将重复生成上次捆绑包。您应该知道它是否更改正确?

我的理解是,您希望获得hgb()$1的版本号

让我们举个例子。如果您在工作中运行
hg log

**(some information were omitted)**

changeset: xxx
user:me@work

changeset: xxx
user:someoneelse@work.com

changeset: xxx
user:me@work

changeset: 777:234asdf2342
user:me@work

changeset: xxx-border-xxx
user:me@home

changeset: xxxx
user:me@home
然后您可能需要使用
777
。这意味着从提示中检查用户,并从
me@home->@工作
me@work -> me@home
在上面的示例中,它是
变更集xxx边框xxx
。然后从中获取上一个变更集版本雷夫,你想做一个捆绑,并导入到你的家庭/工作回购。我希望我理解你的权利。但是你真的应该把你的问题说清楚

无论如何……当然可以由awk完成,以上面的例子为例(省略了分支机构、日期、摘要)

如果使用上述示例:

输出为:

777:234asdf2342
25:0c9365b200a8
如果尝试您问题中的示例,我们必须更改电子邮件地址,那么awk oneliner是:

hg log| awk -vRS="" 'NR==1{p=$0~/Manuel@work/?"Manuel@work":"Manuel@home";l=$2}NR>1 {if($0!~p){print l;exit}else l=$2}'
输出为:

777:234asdf2342
25:0c9365b200a8
我经常使用hg,但不使用捆绑。如果您真的想为您的--base获得24 rev.,那么请看以下内容:

 awk -vRS="" 'NR==1{p=$0~/Manuel@work/?"Manuel@work":"Manuel@home";}NR>1{if($0!~p){print $2;exit}}'
这将为您提供:

24:a1abfcfcefed
注意

如果自上次解包后根本没有变更集ci,则不使用awk行生成捆绑包。它将重复生成上次捆绑包。您应该知道它是否更改正确?

hg捆绑包的Revset版本--base REV命令类型 已使用:revset、revset别名

口头形式的任务:查找最新的变更集,然后提示其他作者连续创建的变更集,而不是查找变更集

解决方案

迭代1

max(用户('work'))
用于带有变更集的捆绑包,打算转移到工作中(最新的“工作”之后是家庭作业)

max(user('home'))
用于带有变更集的捆绑包,打算转移到home
(最新“home”之后的所有内容都是workplacework)

迭代2

压缩和美化:我太懒了,不能输入太多的内容。Bundleable()函数名缩短为ba(),并添加到Mercurial家庭和工作repos配置文件的“revsetalias”部分

 [revsetalias]
 ba('$1') = max(user('$1'))
(使用“$1”而不是$1,以避免手动在参数-信号字符串周围写入“”)

结果

hg bundle--base“ba(home)”
hg bundle--base“ba(work)”

主页|工作定义目的地,必须为其准备捆绑包

hg捆绑包的Revset版本--base REV命令类型 已使用:revset、revset别名

口头形式的任务:查找最新的变更集,然后提示其他作者连续创建的变更集,而不是查找变更集

解决方案

迭代1

max(用户('work'))
用于带有变更集的捆绑包,打算转移到工作中(最新的“工作”之后是家庭作业)

max(user('home'))
用于带有变更集的捆绑包,打算转移到home
(最新“home”之后的所有内容都是workplacework)

迭代2

压缩和美化:我太懒了,不能输入太多的内容。Bundleable()函数名缩短为ba(),并添加到Mercurial家庭和工作repos配置文件的“revsetalias”部分

 [revsetalias]
 ba('$1') = max(user('$1'))
(使用“$1”而不是$1,以避免手动在参数-信号字符串周围写入“”)

结果

hg bund——基本“ba(home)”
hg bun