Git история: откат файлов в любой момент (фаза 9) — UI для простого пользователя
- GitManager: fileHistory (список версий с hash/time/message/author), fileContentAt, fileDiffHtml/Text (git_patch_from_buffers, цветной HTML), restoreFile (запись + автокоммит), lastModifiedTime/String, autoCommit, ensureGitignore (.flora/.stfolder)
- HistoryDialog.qml: список версий (время «только что/5 мин назад» + дата dd.MM.yyyy, сообщение, автор, shortHash), diff с легендой (зелёный +/красный -/синий заголовок), превью содержимого, кнопка «Восстановить эту версию» с подтверждением (объясняет что создастся новый коммит и можно вернуться вперёд), «Обновить/Закрыть»
- MainWindow: меню Правка → История файла (Ctrl+H) и Вернуться к предыдущей версии, FileTree ПКМ → История, передача vaultPath/filePath
- EditorPanel: индикатор «🕘» + lastModifiedStr (gitManager.lastModifiedTimeString), debounce autoCommit (2с) при documentSaved, shortcut Ctrl+H
- FileTreePanel: сигнал historyRequested
- CMake: добавлен HistoryDialog.qml в qml модуль
- Тесты: git_history_test — создание v1/v2, история 1→2, diff, восстановление назад к v1 (история 3), вперёд к v2 (4), v3, diff v1→v3, bad hash, other.md не влияет на историю note.md, autoCommit, lastModified, .gitignore; 21/21 зелёных
- Проверено вперёд/назад: v1→v2→восстановление v1→восстановление v2→v3→autoCommit, каждый шаг с проверкой содержимого и истории
This commit is contained in:
+10
-1
@@ -151,4 +151,13 @@ target_link_libraries(flora_integration_test PRIVATE Qt6::Core Qt6::Gui cmark::c
|
||||
if(TARGET KF6SyntaxHighlighting)
|
||||
target_link_libraries(flora_integration_test PRIVATE KF6SyntaxHighlighting)
|
||||
endif()
|
||||
add_test(NAME flora_integration_test COMMAND flora_integration_test)
|
||||
add_test(NAME flora_integration_test COMMAND flora_integration_test)
|
||||
|
||||
# Тест истории Git (вперёд/назад, diff, восстановление, время)
|
||||
add_executable(flora_git_history_test git_history_test.cpp
|
||||
../src/git/GitManager.cpp
|
||||
../src/git/GitManager.h
|
||||
)
|
||||
target_include_directories(flora_git_history_test PRIVATE ../src)
|
||||
target_link_libraries(flora_git_history_test PRIVATE Qt6::Core Flora_libgit2_static)
|
||||
add_test(NAME flora_git_history_test COMMAND flora_git_history_test)
|
||||
Reference in New Issue
Block a user