使用 Github Desktop 修改二进制差异
Github Desktop 似乎没有能力直接从界面执行此操作。你要做的就是另外安装 git,按照文章中的说明,然后从 Github Desktop,你可以点击 Repository > Show in Explorer,然后右键点击文件夹并选择 Git GUI Here,你可以用它来查看差异.
KTM 项目中粒度更改的外部文件
当您查看 KTM 项目文件 (.fpr) 的 xml 内容时,您会看到项目中的脚本,以及项目定义的所有内部结构。有些可能像字段一样可以理解,但许多其他可能不是。无论哪种方式,您都无法选择性地合并更改(如文章所述)。因此,从本质上讲,您仍然可以为每个更改签入整个项目。如果您希望能够更细化,您可能会考虑使用不同的方法来代替文章建议的内容,甚至是除了文章建议的内容之外。
脚本:您可以将脚本复制到单独的文本文件中,然后再对它们进行正常的差异和合并,因为您知道您可以将合并的脚本复制回项目中。更新:KTM 6.1 Service Pack 1 (6.1.1) 在代码窗口中引入了一个菜单选项,以便轻松执行此操作(工具 > 保存所有脚本)。
定位器:项目生成器允许您将特定定位器的配置导出/导入到文件中。您将无法对这些进行差异或合并,但是,如果您确定某个定位器在某个更改后产生了更差的结果,您可以从以前的签入中导入特定的定位器,而不是还原整个项目。
程序化方法: 可以调用下面的脚本函数为每个类导出一个包含该类脚本的文件,以及每个定位器的导出脚本定位器不能导出,但它们也没有太多配置:它们背后的脚本包含在他们的课堂脚本中。您可以根据需要运行该函数,但为了简单起见,我的建议是每次在 Project Builder 中测试文档时都运行它。因此,每当您测试提取文档时,这些外部文件都是最新的,并且可以提交任何更改。
Public Sub Design_ExportScriptAndLocators()
Dim ClassIndex As Long
Dim Path As String
' You could hard code a path if you did not want to use script variables
Path=Project.ScriptVariables("Dev_ExportPath")
' Make sure you've added the Microsoft Scripting Runtime reference
Dim fso As New Scripting.FileSystemObject
If Not fso.FolderExists(Path) Then Exit Sub
' Here we use class index -1 to represent the special case of the project class
For ClassIndex=-1 To Project.ClassCount-1
Dim KTMClass As CscClass, ClassName As String, ScriptCode As String
' Get the script of this class
If ClassIndex=-1 Then
Set KTMClass=Project.RootClass
ScriptCodPe=Project.ScriptCode
Else
Set KTMClass=Project.ClassByIndex(ClassIndex)
ScriptCode=KTMClass.ScriptCode
End If
' Get the name of the class
ClassName=IIf(ClassIndex=-1,"Project",KTMClass.Name)
' Export script to file
Dim ScriptFile As TextStream
Set ScriptFile=fso.CreateTextFile(Path & "\Script-" & ClassName & ".txt",True,False)
ScriptFile.Write(ScriptCode)
ScriptFile.Close()
' Export locators (same as from Project Builder menus)
Dim FileName As String
Dim LocatorIndex As Integer
For LocatorIndex=0 To KTMClass.Locators.Count-1
If Not KTMClass.Locators.ItemByIndex(LocatorIndex).LocatorMethod Is Nothing Then
FileName="\" & ClassName & "-" & KTMClass.Locators.ItemByIndex(LocatorIndex).Name & ".loc"
KTMClass.Locators.ItemByIndex(LocatorIndex).ExportLocatorMethod(Path & FileName,Path)
End If
Next
Next
End Sub
在 Project Builder 中测试文档提取时的示例调用:
Private Sub Document_AfterExtract(ByVal pXDoc As CASCADELib.CscXDocument)
' Only when run in Project Builder...
If Project.ScriptExecutionMode=CscScriptExecutionMode.CscScriptModeServerDesign Then
' Update external script and locator files added to source control
Design_ExportScriptAndLocators()
End If
End Sub
没有完美的解决方案可以将 KTM 项目或 KC 批处理类存储在源代码控制中,就像简单的代码一样,但这至少可以让您更细粒度地查看签入了哪些更改,并能够以更细粒度的方式还原更改。