TortoiseSVNSVN比较office2007文档完美解决
来源:互联网 发布:百度导航潍坊行知学校 编辑:程序博客网 时间:2024/06/06 03:48
目前TortoiseSVN版本比较和合并OFFICE2007(.docx,xlsx,pptx…)的文档是有问题的,导致大家只能人工合并修订版本。这样有风险也很不方便。今天研究了下SVN的文档比较逻辑,这个问题已完美解决。
1 SVN比较报错
当在后缀为.docx的word文档上点击右键选择” TortoiseSVN”->”比较差异”时,会报下面的错,导致比较失败。
2 解决办法:
1. 右键菜单选择” TortoiseSVN”->”设置”,弹出下面的“TortoiseSVN设置”对话框。
2. 点击上图中的标A的选项”外部程序:差异查看器”,弹出的对话框中,点击”高级设置”按钮,难后弹出下面的对话框,点击添加,可以追加其它类型的打开程序。以.docx为例:选择第一行类型为.doc的记录。点击“编辑(E)….”,复制程序的路径;然后,点击“添加(A)…”,第一个文档框填“.docx”,第二个”Ctrl+V”“粘贴”。点击确定,完成。其它类型的文档可以依照此例添加。
3. 选择“TortoiseSVN设置”对话框中标B的选项“外部程序:合并工具”,设置与第2步一致。
3 绝招:
上面的设置如果完成,就不会报错了,而且可以打开比较界面,以为这样已经完全解决就危险了。仔细看下比较界面,你会发现。我们是拿原版与修改版比较,正好反过来。如果合并的话,你的修改就全没了。补救措施如下:替换TortoiseSVN安装目录Diff-Scripts下的diff-doc.js文件。
diff-doc.js
var objArgs,num,sBaseDoc,sNewDoc,objScript,word,destination;
// Microsoft Office versions for Microsoft Windows OS
var vOffice2000 = 9;
var vOffice2002 = 10;
var vOffice2003 = 11;
var vOffice2007 = 12;
// WdCompareTarget
var wdCompareTargetSelected = 0;
var wdCompareTargetCurrent = 1;
var wdCompareTargetNew = 2;
// WdViewType
var wdMasterView = 5;
var wdNormalView = 1;
var wdOutlineView = 2;
// WdSaveOptions
var wdDoNotSaveChanges = 0;
var wdPromptToSaveChanges = -2;
var wdSaveChanges = -1;
objArgs = WScript.Arguments;
num = objArgs.length;
if (num < 2)
{
WScript.Echo("Usage: [CScript | WScript] diff-doc.js base.doc new.doc");
WScript.Quit(1);
}
sBaseDoc = objArgs(0);
sNewDoc = objArgs(1);
objScript = new ActiveXObject("Scripting.FileSystemObject" );
if ( ! objScript.FileExists(sBaseDoc))
{
WScript.Echo("File " + sBaseDoc + " does not exist. Cannot compare the documents.");
WScript.Quit(1);
}
if ( ! objScript.FileExists(sNewDoc))
{
WScript.Echo("File " + sNewDoc + " does not exist. Cannot compare the documents.");
WScript.Quit(1);
}
objScript = null;
try
{
word = WScript.CreateObject("Word.Application") ;
}
catch(e)
{
WScript.Echo("You must have Microsoft Word installed to perform this operation.");
WScript.Quit(1);
}
word.visible = true;
//for office2007, must switch sBaseDoc <----> sNewDoc
//for later,I don't know!
if (word.Version == vOffice2007)
{
var temp = sNewDoc;
sNewDoc = sBaseDoc;
sBaseDoc = temp;
}
// Open the new document
destination = word.Documents.Open(sNewDoc) ;
// If the Type property returns either wdOutlineView or wdMasterView and the Count property returns zero, the current document is an outline.
if (((destination.ActiveWindow.View.Type == wdOutlineView) || (destination.ActiveWindow.View.Type == wdMasterView)) && (destination.Subdocuments.Count == 0))
{
// Change the Type property of the current document to normal
destination.ActiveWindow.View.Type = wdNormalView;
}
// Compare to the base document
if (Number(word.Version) <= vOffice2000)
{
// Compare for Office 2000 and earlier
destination.Compare(sBaseDoc);
}
else
{
// Compare for Office XP (2002) and later
destination.Compare(sBaseDoc, "Comparison", wdCompareTargetNew, true, true);
}
// Show the comparison result
if (Number(word.Version) < vOffice2007)
{
word.ActiveDocument.Windows(1).Visible = 1;
}
// Mark the comparison document as saved to prevent the annoying
// "Save as" dialog from appearing.
word.ActiveDocument.Saved = 1;
// Close the first document
if (Number(word.Version) >= vOffice2002)
{
destination.Close(wdDoNotSaveChanges);
}
- TortoiseSVNSVN比较office2007文档完美解决
- office2003和office2007比较
- 解决office2007安装问题
- mfc 多文档 office2007 菜单栏绑定工具栏
- 完美安装AD、VS2008、SQL2008、MOSS2007、Office2007于一机
- 解决office2003与office2007共存问题
- office2007 powerpoint2007无法输入汉字如何解决?
- 解决VC6与Office2007冲突的问题
- 解决office2007和vs2008安装冲突
- 解决Office2007 powerpoint 保存慢的问题
- 解决Office2007使用内存泄露问题
- 解决VC6与Office2007冲突的问题
- 如何解决office2007无法重装的问题
- VC++6.0和office2007的冲突解决
- 解决Office2007 powerpoint 运行慢的问题
- 打造完美接口文档
- 打造完美接口文档
- Net2005中的WebBrowser控件无法显示office2007的文档
- mtk socket
- SetStretchBltMode
- C++容器&数据结构
- web em "数据库错误 Io 异常: Unknown host specified "
- USB枚举过程图解
- TortoiseSVNSVN比较office2007文档完美解决
- 新浪xweibo代码架构分析
- 修改Eclipse的编码方式
- 嵌入式数据库 服务器-客户端网络访问实现
- IIS中限制访问IP设置方法
- 并集-查找算法
- flash加载外部图片等比缩放类(as3)
- java遍历时删除元素
- JAVA API系列----String类与StringBuffer类