我正在尝试使用mercurial配置beyondcompare来设置多个工作流程。
目前我可以这样做:
hg bcompare
或hg bcompare --rev <something>
我想做的是:
hg bcompare
或hg bcompare --rev <something>
在这个工作流程中,这个工作流程并不起作用,但我似乎无法弄清楚它是否是无法比拟的,或者是混乱的东西。我可以看到,在比较右侧窗格中的文件位于以下目录中:/tmp/extdiff.MIGT6x/dir
。
这个目录来自哪里?有没有一种方法可以让我在修订版之间做出完全差异(我知道这会更慢)?
另外,有没有办法可以超越 - 比较保存将文件写入真实位置并超越比较刷新才能正常工作?
中的说明设置了超比较[extensions]
hgext.extdiff =
[extdiff]
cmd.bcompare =
[merge-tools]
bcomp.executable = /usr/bin/bcompare
bcomp.args = $local $other $base $output
bcomp.priority = 1
bcomp.premerge = True
bcomp.gui = True
答案 0 :(得分:1)
&#39; extdiff&#39;扩展(这是我希望您能够在bcompare中显示您的更改所使用的),使用&#h; status&#39;检查2个修订版之间(或当前工作目录和修订版之间)的文件有何不同。
然后将所有与两个临时目录不同的文件复制并调用bcompare(或任何其他difftool)来比较这两个目录。
这种方法的好处:
当然,缺点是difftool内部的编辑不会在您的存储库中显示效果。 换句话说:它不可能以你想要的方式做到这一点。
答案 1 :(得分:0)
Mathiasdm在their answer中所说的是正确的,因为HG会创建临时文件,然后告诉Beyond Compare启动差异。
如果您仍希望保存对临时文件所做的编辑,最好的选择是使用// Populate class that implements IComparable for custom sorting on Month
List<SortedMonth> lstPivot = new List<SortedMonth>();
foreach (DataRow row in dt.Rows)
{
lstPivot.Add(
new SortedMonth
{
MONTH = new Month
{
MonthName = row["MONTH"].ToString().Trim(),
MonthNumber = !row.IsNull("MONTH") ? DateTime.ParseExact(row["MONTH"].ToString().Trim(), "MMMM", CultureInfo.CurrentCulture).Month : 0
}
});
}
public class SortedMonth: IComparable
{
public Month MONTH { get; set; }
public int CompareTo(object obj)
{
return 0;
}
}
//[Serializable]
public class Month : IComparable
{
public string MonthName { get; set; }
public int MonthNumber { get; set; }
public override string ToString()
{
return MonthName;
}
public override bool Equals(object obj)
{
Month month = obj as Month;
if (month != null)
{
return MonthNumber.Equals(MonthNumber);
}
else
{
return false;
}
}
public override int GetHashCode()
{
return MonthNumber.GetHashCode();
}
public int CompareTo(object obj)
{
return MonthNumber.CompareTo(((Month)obj).MonthNumber);
}
}
命令并将其指向回购中的现有文件。话虽这么说,如果您只想编辑当前工作文件,您只需编辑左侧(工作副本)并直接保存更改。除此之外,没有办法迫使Beyond Compare对不是临时文件的文件进行差异,因为文件是由HG生成的。