在git
中,有^
插入符号来表示它前面的概念。
在 tf.exe 命令行中,我必须输入 2 个变更集编号才能到 a diff。我只对与以前的变更集的差异感兴趣,所以我喜欢下面的工作,但它不起作用:
tf diff path/to/file.cpp /version:^69~69
理由是,我不想麻烦剪切、粘贴和搜索以前的变更集编号是什么。
由于看起来 TFS tf.exe 不支持它,因此我在下面提供了一个在 shell 中工作的替代解决方案cygwin
。您必须首先创建一个符号链接tf
到tf.exe
的位置。并在.bashrc
中添加以下功能:
tf_diff () {
[ $# -ne 2 ] && return
local TLINES=$(tput lines)
local ARTIFACT=$1
local CHANGESET=$2
local $PREVIOUS=$(tf history . /recursive | sed -n "/$CHANGESET/{n;p;}" | cut -d' ' -f1)
local TMPFILE=$(mktemp --suffix=.diff)
rm -f $TMPFILE
tf diff $ARTIFACT /version:$PREVIOUS~$CHANGESET > $TMPFILE;
if [ $(wc -l < $TMPFILE) -gt $TLINES ]; then
vim $TMPFILE
else
cat $TMPFILE
fi
rm -f $TMPFILE
}
您可以选择将以前的历史记录保存到文件中,以便只有在变更集不在文件中时才能远程查询 TFS 历史记录。
一旦我确定确实 TFS tf.exe 做不到,我就会接受这个答案。