Github Desktop Сравнительный скрипт

Итак, у нас есть программа, в которой наш "контроль версий", по крайней мере, в течение последних трех-четырех лет, просто помечал дату версией проекта Save-As каждый раз, когда мы вносим изменения. Очевидно, что это не является устойчивым. Недавно мы смогли перейти на Github для всех наших проектов, и я хотел сделать то же самое с этим.

К сожалению, сохраненная версия кода / проекта заканчивается сжатой версией XML-файла без разрывов строк. Не совсем легко для сравнения. Я нашел способ проводить сравнения, основанные на командной строке, с обновлениями gitconfig и gitattribute и небольшим внешним сценарием, и он неплохо работает в этой среде.

Но мы в первую очередь используем (корпоративный) веб-сайт и Github Desktop для наших нужд. И этот процесс, кажется, не относится к этим средам.

Таким образом, вопрос в том, есть ли способ настроить скрипт для сравнения на веб-странице GitHub или в среде GitHub Desktop?

Для справки я обнаружил, что страница командной строки / git для формата Windows была https://www.theorycrafter.org/quipu/order-to-chaos-version-control-and-transformations/, а программа - Kofax Transformation Модули.

1 ответ

Решение

Изменение двоичных различий с помощью Github Desktop

Похоже, что Github Desktop не имеет возможности сделать это непосредственно из интерфейса. Что бы вы сделали, это дополнительно установили git, следуйте инструкциям в статье, затем в Github Desktop вы можете нажать Repository > Show in Explorer, затем щелкнуть правой кнопкой мыши по папке и выбрать Git GUI Here, который вы можете использовать для просмотра различий.,

Внешние файлы для гранулярных изменений в проекте KTM

Когда вы смотрите на XML-содержимое файла проекта KTM (.fpr), вы видите сценарий в проекте, а также все внутренние элементы определения проекта. Некоторые из них могут быть понятны, как поля, но многие не могут. В любом случае, вы не сможете выборочно объединить изменения (как упоминается в статье). По сути, вы по-прежнему будете регистрировать весь проект для каждого изменения. Если вы хотите быть более детальным, вы можете рассмотреть другой подход вместо или даже в дополнение к тому, что предлагает статья.

Скрипт: Вы можете скопировать ваш скрипт в отдельные текстовые файлы, которые будут зарегистрированы, а затем сможете выполнять обычные сравнения и слияния с ними, зная, что вы можете скопировать объединенный скрипт обратно в проект. Обновление: KTM 6.1 с пакетом обновления 1 (6.1.1) вводит пункт меню в окне кода, чтобы сделать это легко (Инструменты> Сохранить все сценарии).

Локаторы: Project Builder позволяет экспортировать / импортировать конфигурацию определенного локатора в файл. Вы не сможете делать различия или слияния по ним, однако, если вы определили, что локатор давал худшие результаты после определенного изменения, вы могли бы импортировать определенный локатор из предыдущей регистрации, а не возвращать весь проект.

Программный подход: нижеприведенную функцию сценария можно вызвать для экспорта файла для каждого класса, содержащего сценарий класса, а также для экспорта каждого локатора. Локаторы сценариев не могут быть экспортированы, но они также не имеют большой конфигурации: сценарий позади них входит в их сценарий класса. Вы можете запускать функцию по мере необходимости, но для простоты я рекомендую запускать ее каждый раз, когда вы тестируете документ в 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 в управлении исходным кодом так же хорошо, как простой код, но это, по крайней мере, дает вам немного больше детализации, чтобы увидеть, какие изменения зарегистрированы, и иметь возможность отменить изменения с большей детализацией.

Другие вопросы по тегам