13 #include <QMainWindow>
22 class QListWidgetItem;
23 class QTableWidgetItem;
24 class QTreeWidgetItem;
54 : data(s.data(), s.size())
72 class AbstractGitCommand;
79 std::shared_ptr<ProcessStatus>
status;
102 IndexRole = Qt::UserRole,
161 operator bool ()
const
171 void postEvent(QObject *receiver, QEvent *event,
int ms_later);
173 void cancelPendingUserEvents();
175 void updateFileList(
const GitHash &
id);
177 void updateFileListLater(
int delay_ms);
178 void cancelUpdateFileList();
179 void initUpdateFileListTimer();
182 bool new_session =
true;
184 bool validate =
false;
185 bool wait_cursor =
true;
186 bool keep_selection =
false;
188 bool clear_log =
true;
189 bool do_fetch =
true;
191 bool suppress_uncommit_changes =
false;
196 void reopenRepositoryAsNewSession();
197 void openSelectedRepository();
201 QStringList selectedFiles_(QListWidget *listwidget)
const;
202 QStringList selectedFiles()
const;
203 void for_each_selected_files(std::function<
void (QString
const &)>
const &fn);
204 void clearFileList();
205 void clearDiffView();
210 void buildRepoTree(QString
const &group, QTreeWidgetItem *item, QList<RepositoryInfo> *repos);
211 void refrectRepositories();
213 void updateDiffView(QListWidgetItem *item);
214 void updateDiffView();
215 void updateUnstagedFileCurrentItem();
216 void updateStagedFileCurrentItem();
217 void updateStatusBarText();
218 void setRepositoryInfo(QString
const &reponame, QString
const &brname);
220 QString getIncrementalSearchText()
const;
221 void setFilterText(QString
const &text,
int repo_list_select_row = -1);
222 void clearFilterText(
int repo_list_select_row = -1);
223 void clearAllFilters(
int select_row = -1);
225 void _appendCharToFilterText(ushort c);
235 void setRemoteOnline(
bool f,
bool save);
237 void setNetworkingCommandsEnabled(
bool enabled);
238 void blame(QListWidgetItem *item);
240 QListWidgetItem *currentFileItem()
const;
241 void execAreYouSureYouWantToContinueConnectingDialog(QString
const &windowtitle);
243 QStringList remoteBranches(
const GitHash &
id, QStringList *all);
244 bool isUninitialized();
245 void onLogCurrentItemChanged(
bool update_file_list);
247 void findText(QString
const &text);
248 bool locateCommitID(QString
const &commit_id);
251 void showLogWindow(
bool show);
252 bool isValidRemoteURL(QString
const &url, QString
const &sshkey);
253 QStringList whichCommand_(QString
const &cmdfile1, QString
const &cmdfile2 = {});
254 QString selectCommand_(QString
const &cmdname,
const QStringList &cmdfiles,
const QStringList &list, QString path,
const std::function<
void (QString
const &)> &callback);
255 QString selectCommand_(QString
const &cmdname, QString
const &cmdfile,
const QStringList &list, QString
const &path,
const std::function<
void (QString
const &)> &callback);
256 const RepositoryInfo *findRegisteredRepository(QString *workdir)
const;
257 bool execSetGlobalUserDialog();
258 void revertAllFiles();
259 bool execWelcomeWizardDialog();
260 void execRepositoryPropertyDialog(
const RepositoryInfo &repo,
bool open_repository_menu =
false);
261 void execConfigUserDialog(
const GitUser &global_user,
const GitUser &local_user,
bool enable_local_user, QString
const &reponame);
262 void setGitCommand(QString
const &path,
bool save);
263 void setGpgCommand(QString
const &path,
bool save);
264 void setSshCommand(QString
const &path,
bool save);
265 bool checkGitCommand();
266 bool saveByteArrayAs(
const QByteArray &ba, QString
const &dstpath);
267 QString executableOrEmpty(QString
const &path);
268 bool checkExecutable(QString
const &path);
269 void internalSaveCommandPath(QString
const &path,
bool save, QString
const &name);
270 void logGitVersion();
271 void internalClearRepositoryInfo();
274 void setCurrentRepository(
const RepositoryInfo &repo,
bool clear_authentication);
275 std::optional<QList<GitDiff>> makeDiffs(
GitRunner g,
GitHash id, std::future<QList<GitSubmoduleItem>> &&async_modules);
277 void updateRemoteInfo();
279 void submodule_add(QString url = {}, QString
const &local_dir = {});
281 void commit(
bool amend =
false);
286 void push(
bool set_upstream, QString
const &remote, QString
const &branch,
bool force);
288 void stage(
GitRunner g,
const QStringList &paths);
292 void delete_tags(
GitRunner g,
const QStringList &tagnames);
298 void deleteSelectedBranch();
299 void resetFile(
const QStringList &paths);
300 void clearAuthentication();
301 void clearSshAuthentication();
302 void internalDeleteTags(
const QStringList &tagnames);
303 void internalAddTag(QString
const &name);
304 void createRepository(QString
const &dir);
305 void addRepository(QString
const &local_dir, QString
const &group = {});
307 void scanFolderAndRegister(QString
const &group);
308 void doGitCommand(
const std::function<
void (
GitRunner)> &callback);
309 void setWindowTitle_(
const GitUser &user);
310 void setUnknownRepositoryInfo();
311 void setCurrentRemoteName(QString
const &name);
313 QStringList remotes()
const;
315 QString tempfileHeader()
const;
316 void deleteTempFiles();
317 QString newTempFilePath();
318 int limitLogCount()
const;
319 bool isThereUncommitedChanges()
const;
321 const std::map<GitHash, BranchList> &branchmap()
const;
323 void updateWindowTitle(
const GitUser &user);
326 std::tuple<QString, BranchLabelList> makeCommitLabels(
GitCommitItem const &commit, std::map<GitHash, BranchList>
const &branch_map, std::map<GitHash, TagList>
const &tag_map)
const;
329 void removeRepositoryFromBookmark(RepositoryTreeIndex
const &index,
bool ask);
332 bool askAreYouSureYouWantToRun(QString
const &title, QString
const &command);
333 bool editFile(QString
const &path, QString
const &title);
336 void saveApplicationSettings();
338 void setDiffResult(
const QList<GitDiff> &diffs);
339 const QList<GitSubmoduleItem> &submodules()
const;
340 void setSubmodules(
const QList<GitSubmoduleItem> &submodules);
341 bool runOnRepositoryDir(
const std::function<
void (QString, QString)> &callback,
const RepositoryInfo *repo);
344 const std::map<GitHash, TagList> &tagmap()
const;
345 std::map<GitHash, TagList> queryTags(
GitRunner g);
348 void sshSetPassphrase(
const std::string &user,
const std::string &pass);
349 std::string sshPassphraseUser()
const;
350 std::string sshPassphrasePass()
const;
351 void httpSetAuthentication(
const std::string &user,
const std::string &pass);
352 std::string httpAuthenticationUser()
const;
353 std::string httpAuthenticationPass()
const;
356 bool saveRepositoryBookmarks();
357 QString getBookmarksFilePath()
const;
358 void stopPtyProcess();
359 void abortPtyProcess();
362 bool getPtyProcessOk()
const;
363 bool isPtyProcessRunning()
const;
364 void setCompletedHandler(std::function<
void (
bool,
const QVariant &)> fn,
const QVariant &userdata);
365 void setPtyProcessOk(
bool pty_process_ok);
367 const QList<RepositoryInfo> &repositoryList()
const;
368 void setRepositoryList(QList<RepositoryInfo> &&list);
370 bool interactionEnabled()
const;
371 void setInteractionEnabled(
bool enabled);
372 InteractionMode interactionMode()
const;
373 void setInteractionMode(
const InteractionMode &im);
374 void setUncommitedChanges(
bool uncommited_changes);
375 QList<GitDiff>
const *diffResult()
const;
377 void clearLabelMap();
382 void setHeadId(
const GitHash &head_id);
383 void setPtyProcessCompletionData(
const QVariant &value);
384 const QVariant &getTempRepoForCloneCompleteV()
const;
385 void msgNoRepositorySelected();
386 bool isRepositoryOpened()
const;
387 void initRepository(QString
const &path, QString
const &reponame,
const GitRemote &remote);
388 void updatePocessLog(
bool processevents);
389 void appendLogHistory(
const QByteArray &str);
390 std::vector<std::string> getLogHistoryLines();
391 void clearLogHistory();
392 void updateAvatar(
const GitUser &user,
bool request);
393 void cleanSubModule(
GitRunner g, QListWidgetItem *item);
395 void updateUncommitedChanges(
GitRunner g);
397 QString preferredRepositoryGroup()
const;
398 void setPreferredRepositoryGroup(QString
const &group);
399 bool _addExistingLocalRepository(QString dir, QString name, QString sshkey,
bool open,
bool save =
true,
bool msgbox_if_err =
true);
400 void addExistingLocalRepositoryWithGroup(QString
const &dir, QString
const &group);
401 bool addExistingLocalRepository(QString
const &dir,
bool open);
404 int rowFromCommitId(
const GitHash &
id);
406 void _updateCommitLogTableView(
int delay_ms);
414 void jump(
GitRunner g, QString
const &text);
415 void connectPtyProcessCompleted();
416 void setupShowFileListHandler();
418 void setRetry(std::function<
void (
const QVariant &)> fn,
const QVariant &
var);
421 bool isRetryQueued()
const;
423 void clearGitCommandCache();
424 void clearGitObjectCache();
432 void setupAddFileObjectData();
434 void setupStatusInfoHandler();
435 void connectSetCommitLog();
437 void _chooseRepository(QTreeWidgetItem *item);
438 void chooseRepository();
441 std::optional<GitCommitItem> getCommitItem(
GitRunner g,
const GitHash &hash)
const;
443 void closeEvent(QCloseEvent *event)
override;
444 void dragEnterEvent(QDragEnterEvent *event)
override;
445 void keyPressEvent(QKeyEvent *event)
override;
446 bool event(QEvent *event)
override;
447 bool eventFilter(QObject *watched, QEvent *event)
override;
448 std::optional<RepositoryInfo> selectedRepositoryItem()
const;
449 void removeSelectedRepositoryFromBookmark(
bool ask);
456 void onLogVisibilityChanged();
457 void onRepositoriesTreeDropped();
458 void onInterval10ms();
459 void onAvatarReady();
460 void onCommitDetailGetterReady();
463 void onCommitLogCurrentRowChanged(
int row);
465 void on_action_about_triggered();
466 void on_action_add_repository_triggered();
467 void on_action_clean_df_triggered();
468 void on_action_commit_triggered();
469 void on_action_create_desktop_launcher_file_triggered();
470 void on_action_delete_branch_triggered();
471 void on_action_delete_remote_branch_triggered();
472 void on_action_edit_git_config_triggered();
473 void on_action_edit_gitignore_triggered();
474 void on_action_edit_global_gitconfig_triggered();
475 void on_action_edit_settings_triggered();
476 void on_action_edit_tags_triggered();
477 void on_action_exit_triggered();
478 void on_action_expand_commit_log_triggered();
479 void on_action_expand_diff_view_triggered();
480 void on_action_expand_file_list_triggered();
481 void on_action_explorer_triggered();
482 void on_action_fetch_prune_triggered();
483 void on_action_fetch_triggered();
484 void on_action_find_next_triggered();
485 void on_action_find_triggered();
486 void on_action_offline_triggered();
487 void on_action_online_triggered();
488 void on_action_pull_triggered();
489 void on_action_push_all_tags_triggered();
490 void on_action_push_triggered();
491 void on_action_reflog_triggered();
492 void on_action_repo_checkout_triggered();
493 void on_action_repo_jump_to_head_triggered();
494 void on_action_repo_jump_triggered();
495 void on_action_repo_merge_triggered();
496 void on_action_repositories_panel_triggered();
497 void on_action_repository_property_triggered();
498 void on_action_repository_status_triggered();
499 void on_action_reset_HEAD_1_triggered();
500 void on_action_reset_hard_triggered();
501 void on_action_configure_user_triggered();
502 void on_action_set_gpg_signing_triggered();
503 void on_action_show_labels_triggered();
504 void on_action_show_graph_triggered();
505 void on_action_show_avatars_triggered();
506 void on_action_sidebar_triggered();
507 void on_action_stash_apply_triggered();
508 void on_action_stash_drop_triggered();
509 void on_action_stash_triggered();
510 void on_action_stop_process_triggered();
511 void on_action_submodule_add_triggered();
512 void on_action_submodule_update_triggered();
513 void on_action_submodules_triggered();
514 void on_action_terminal_triggered();
515 void on_action_view_refresh_triggered();
516 void on_action_window_log_triggered(
bool checked);
517 void on_listWidget_files_currentRowChanged(
int currentRow);
518 void on_listWidget_files_customContextMenuRequested(
const QPoint &pos);
519 void on_listWidget_files_itemDoubleClicked(QListWidgetItem *item);
520 void on_listWidget_staged_currentRowChanged(
int currentRow);
521 void on_listWidget_staged_customContextMenuRequested(
const QPoint &pos);
522 void on_listWidget_staged_itemDoubleClicked(QListWidgetItem *item);
523 void on_listWidget_unstaged_currentRowChanged(
int currentRow);
524 void on_listWidget_unstaged_customContextMenuRequested(
const QPoint &pos);
525 void on_listWidget_unstaged_itemDoubleClicked(QListWidgetItem *item);
526 void on_radioButton_remote_offline_clicked();
527 void on_radioButton_remote_online_clicked();
528 void on_tableWidget_log_customContextMenuRequested(
const QPoint &pos);
529 void on_tableWidget_log_doubleClicked(
const QModelIndex &index);
530 void on_toolButton_commit_clicked();
531 void on_toolButton_explorer_clicked();
532 void on_toolButton_fetch_clicked();
533 void on_toolButton_pull_clicked();
534 void on_toolButton_push_clicked();
535 void on_toolButton_select_all_clicked();
536 void on_toolButton_stage_clicked();
537 void on_toolButton_status_clicked();
538 void on_toolButton_stop_process_clicked();
539 void on_toolButton_terminal_clicked();
540 void on_toolButton_unstage_clicked();
541 void on_treeWidget_repos_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
542 void on_treeWidget_repos_customContextMenuRequested(
const QPoint &pos);
543 void on_treeWidget_repos_itemDoubleClicked(QTreeWidgetItem *item,
int column);
544 void on_toolButton_addrepo_clicked();
547 void toggleMaximized();
549 void onRemoteInfoChanged();
550 void onShowStatusInfo(
StatusInfo const &info);
551 void on_action_rebase_abort_triggered();
556 void on_action_view_sort_by_time_changed();
558 void on_action_ssh_triggered();
560 void on_action_restart_trace_logger_triggered();
577 explicit MainWindow(QWidget *parent =
nullptr);
580 QColor color(
unsigned int i);
581 bool isOnlineMode()
const;
582 void updateCurrentFileList();
586 const TagList &queryCurrentCommitTagList()
const;
588 static int indexOfLog(QListWidgetItem *item);
589 static int indexOfDiff(QListWidgetItem *item);
590 static QList<GitSubmoduleItem> updateSubmodules(
GitRunner g,
const GitHash &
id);
592 static TagList findTag(std::map<GitHash, TagList>
const &tagmap,
GitHash const &
id);
593 static QString makeRepositoryName(QString
const &loc);
594 static void addDiffItems(
const QList<GitDiff> *diff_list,
const std::function<
void (
const ObjectData &)> &add_item);
595 static GitHash getObjectID(QListWidgetItem *item);
596 static QString getFilePath(QListWidgetItem *item);
597 static QString getSubmodulePath(QListWidgetItem *item);
598 static QString getSubmoduleCommitId(QListWidgetItem *item);
601 static std::string parseDetectedDubiousOwnershipInRepositoryAt(
const std::vector<std::string> &lines);
604 static bool isValidWorkingCopy(
GitRunner g);
605 bool isValidWorkingCopy(QString
const &local_dir);
608 void drawDigit(QPainter *pr,
int x,
int y,
int n)
const;
609 static constexpr
int DIGIT_WIDTH = 5;
610 static constexpr
int DIGIT_HEIGHT = 7;
612 void clearStatusInfo();
613 bool setCurrentLogRow(
int row);
615 void deleteTags(QStringList
const &tagnames);
616 void addTag(QString
const &name);
617 int selectedLogIndex()
const;
618 void updateAncestorCommitMap();
619 bool isAncestorCommit(
GitHash const &
id)
const;
620 void postStartEvent(
int ms_later);
621 void setShowLabels(
bool show,
bool save);
622 void setShowGraph(
bool show,
bool save);
623 void setShowAvatars(
bool show,
bool save);
624 bool isLabelsVisible()
const;
625 bool isGraphVisible()
const;
626 bool isAvatarsVisible()
const;
627 bool isAvatarEnabled()
const;
628 void makeDiffList(
const GitHash &
id, QList<GitDiff> *diff_list, QListWidget *listwidget);
630 void execCommitPropertyDialog(QWidget *parent,
const GitCommitItem &commit);
631 void execCommitExploreWindow(QWidget *parent,
const GitCommitItem *commit);
632 void execFileHistory(QString
const &path);
633 void execFileHistory(QListWidgetItem *item);
634 void showObjectProperty(QListWidgetItem *item);
635 bool testRemoteRepositoryValidity(QString
const &url, QString
const &sshkey);
636 QString selectGitCommand(
bool save);
637 QString selectGpgCommand(
bool save);
638 QString selectSshCommand(
bool save);
640 void setCurrentBranch(
const GitBranch &b);
642 QString currentRepositoryName()
const;
643 QString currentRemoteName()
const;
644 QString currentBranchName()
const;
645 GitRunner _git(QString
const &dir, QString
const &submodpath, QString
const &sshkey)
const;
646 GitRunner unassosiated_git_runner()
const;
647 GitRunner new_git_runner(QString
const &dir, QString
const &sshkey);
651 bool isValidWorkingCopy(QString
const &dir)
const;
652 void autoOpenRepository(QString dir, QString
const &commit_id = {});
653 std::optional<GitCommitItem> queryCommit(
const GitHash &
id);
654 bool checkoutLocalBranch(QString
const &name);
655 void checkout(QWidget *parent,
const GitCommitItem &commit, std::function<
void ()> accepted_callback = {});
657 bool jumpToCommit(
const GitHash &
id);
658 bool jumpToCommit(QString
const &
id);
661 void emitWriteLog(
LogData const &logdata);
662 QString findFileID(
const GitHash &commit_id, QString
const &file);
665 QImage committerIcon(
int row, QSize size)
const;
666 void changeSshKey(QString
const &local_dir, QString
const &ssh_key,
bool save);
669 QString defaultWorkingDir()
const;
670 QIcon signatureVerificationIcon(
const GitHash &
id)
const;
671 QAction *addMenuActionProperty(QMenu *menu);
672 QString currentWorkingCopyDir()
const;
676 GitUser currentGitUser()
const;
677 void setupExternalPrograms();
678 void updateCommitLogTableViewLater();
680 void changeRepositoryBookmarkName(
RepositoryInfo item, QString new_name);
682 void setProgress(
float progress);
683 void showProgress(QString
const &text,
float progress = -1.0f);
685 void internalAfterFetch();
686 void onRepositoryTreeSortRecent(
bool f);
689 void clearLogContents();
690 void updateLogTableView();
691 void setFocusToLogTable();
692 void selectLogTableRow(
int row);
696 bool saveFileAs(QString
const &srcpath, QString
const &dstpath);
697 bool saveBlobAs(QString
const &
id, QString
const &dstpath);
699 static void openTerminal(QString
const &dir, QString
const &ssh_key);
700 static void openExplorer(QString
const &dir, QString
const &ssh_key);
701 static void openNewGuitar(QString
const &path, QString
const &commit_id);
703 void internalWriteLog(
const LogData &logdata);
GitMergeFastForward
Definition: GitTypes.h:364
QList< NamedCommitItem > NamedCommitList
Definition: Git.h:257
QList< BranchLabel > BranchLabelList
Definition: RepositoryModel.h:9
QList< GitBranch > BranchList
Definition: RepositoryModel.h:8
QList< GitTag > TagList
Definition: RepositoryModel.h:7
std::shared_ptr< TextEditorTheme > TextEditorThemePtr
Definition: TextEditorTheme.h:9
Definition: AboutDialog.h:10
Definition: AddRepositoryDialog.h:14
Definition: ApplicationSettings.h:23
ログテーブルウィジェットのブランチ名ラベル
Definition: BranchLabel.h:11
Definition: FileHistoryWindow.h:14
std::variant< Git_clone, Git_fetch, Git_stage, Git_push, Git_pull, Git_push_tags, Git_delete_tag, Git_delete_tags, Git_add_tag, Git_submodule_add > variant_t
Definition: GitCommandRunner.h:133
Definition: GitTypes.h:142
Definition: GitTypes.h:31
Definition: GitObjectManager.h:37
Definition: GitRunner.h:14
Definition: MainWindow.h:65
std::vector< std::string > lines
Definition: MainWindow.h:69
size_t pos
Definition: MainWindow.h:68
size_t len
Definition: MainWindow.h:68
int hunk_number
Definition: MainWindow.h:67
Definition: MainWindow.h:706
MainWindow::FileListType files_list_type
Definition: MainWindow.h:708
std::vector< MainWindow::ObjectData > object_data
Definition: MainWindow.h:709
Definition: MainWindow.h:157
QByteArray content
Definition: MainWindow.h:160
bool is(GitObject::Type t) const
Definition: MainWindow.h:165
Definition: MainWindow.h:90
@ FilePathRole
Definition: MainWindow.h:103
@ DiffIndexRole
Definition: MainWindow.h:104
@ HeaderRole
Definition: MainWindow.h:106
@ ObjectIdRole
Definition: MainWindow.h:105
@ SubmoduleCommitIdRole
Definition: MainWindow.h:108
@ SubmodulePathRole
Definition: MainWindow.h:107
void signalShowStatusInfo(StatusInfo const &info)
void signalSetProgress(float progress)
void setForceFetch(bool force_fetch)
Ui::MainWindow * ui
Definition: MainWindow.h:143
static std::pair< QString, QString > makeFileItemText(const ObjectData &data)
Private * m
Definition: MainWindow.h:145
InteractionMode
Definition: MainWindow.h:115
@ None
Definition: MainWindow.h:116
@ Busy
Definition: MainWindow.h:117
void signalHideProgress()
NamedCommitFlag
Definition: MainWindow.h:120
void sigPtyFetchCompleted(bool ok, QVariant const &userdata)
QString currentFileMimeFileType() const
void sigPtyCloneCompleted(bool ok, QVariant const &userdata)
FileListType
Definition: MainWindow.h:126
CloneOperation
Definition: MainWindow.h:110
@ SubmoduleAdd
Definition: MainWindow.h:112
@ Clone
Definition: MainWindow.h:111
void enableDragAndDropOnRepositoryTree(bool enabled)
bool getForceFetch() const
void signalAddFileObjectData(const MainWindowExchangeData &data)
void sigSetCommitLog(const CommitLogExchangeData &log)
void signalUpdateCommitLog()
void connectShowFileListHandler()
void sigPtyProcessCompleted(bool ok, PtyProcessCompleted const &data)
FilterTarget
Definition: MainWindow.h:152
void sigWriteLog(LogData const &logdata)
void sigShowFileList(FileListType files_list_type)
Definition: MyProcess.h:21
Definition: MainWindow.h:76
PtyProcessCompleted()
Definition: MainWindow.h:83
QString process_name
Definition: MainWindow.h:81
QVariant userdata
Definition: MainWindow.h:80
QElapsedTimer elapsed
Definition: MainWindow.h:82
std::function< void(ProcessStatus *, QVariant const &)> callback
Definition: MainWindow.h:78
std::shared_ptr< ProcessStatus > status
Definition: MainWindow.h:79
Definition: StatusInfo.h:8
Definition: UnixPtyProcess.h:7
Definition: UserEvent.h:31
std::variant< StartEventData, CloneRepositoryEventData > variant_t
Definition: UserEvent.h:36
Definition: AboutDialog.h:6
static Variant var(jstream::Reader const &reader)
Definition: jstream.h:1612
Definition: GitTypes.h:67
Definition: MainWindow.h:32
RepositoryInfo repodata
Definition: MainWindow.h:34
GitCloneData clonedata
Definition: MainWindow.h:33
Definition: RepositoryModel.h:28
Definition: GitTypes.h:224
Definition: GitTypes.h:251
Definition: GitTypes.h:114
Definition: MainWindow.h:60
QString repository_name
Definition: MainWindow.h:62
QString owner_account_name
Definition: MainWindow.h:61
Type
Definition: GitTypes.h:78
Definition: GitTypes.h:11
Definition: GitTypes.h:370
Definition: GitTypes.h:215
Definition: MainWindow.h:38
LogData(QByteArray const &ba)
Definition: MainWindow.h:41
LogData(char const *p, int n)
Definition: MainWindow.h:49
LogData(std::string_view const &s)
Definition: MainWindow.h:53
QByteArray data
Definition: MainWindow.h:39
LogData(QString const &s)
Definition: MainWindow.h:45
Definition: MainWindow.h:133
QString header
Definition: MainWindow.h:138
int idiff
Definition: MainWindow.h:139
QString id
Definition: MainWindow.h:134
GitSubmoduleItem submod
Definition: MainWindow.h:136
QString path
Definition: MainWindow.h:135
GitCommitItem submod_commit
Definition: MainWindow.h:137
Definition: MainWindow.h:181
Definition: MainWindow.cpp:114
Definition: MainWindow.h:148
Definition: RepositoryModel.h:11
Definition: RepositoryInfo.h:7