查找具有外发更改集的所有Mercurial项目

时间:2011-11-14 15:14:41

标签: mercurial

我在一个共同的“开发”目录下检查了许多Mercurial项目。对于我列出此目录下具有尚未推送到父存储库的传出更改集的所有项目,最简单的方法是什么?进入每个项目目录并运行hg outgoing并不理想。

1 个答案:

答案 0 :(得分:3)

我找到的最简单的方法是以下脚本:

#!/bin/bash
IFS=$(printf "\n\b")
for project in `find . -type d -name .hg`
do
    pushd -- "$project" > /dev/null || exit 1
    cd .. > /dev/null
    if hg outgoing | grep changeset: > /dev/null
    then
       echo `pwd`
    fi
    popd > /dev/null
done

备注

  1. 如果您使用MQ但不是versioning the patch repository,则需要将上面的find命令更改为 find . -type d -name .hg | grep -v .hg/patches/.hg
  2. 如果要列出所有具有未提交作品的项目,请将if语句更改为 if [ `hg status | wc -l` -gt 0 ]