francescmm / gitqlient Goto Github PK
View Code? Open in Web Editor NEWGitQlient: Multi-platform Git client written with Qt.
Home Page: https://www.francescmm.com
License: GNU Lesser General Public License v2.1
GitQlient: Multi-platform Git client written with Qt.
Home Page: https://www.francescmm.com
License: GNU Lesser General Public License v2.1
Right now the log level is defined in compilation time. Allow the user to configure it from UI and by parameter on execution.
Right now GitQlient only has dark colors schema. It would be nice to have both dark and bright.
I noticed you have this awesome feature where each file selected to diff will appear on the diff page so that one can select back and forth between them. But in order to put a bunch of files on there, you need to go back and forth between repoview and diff view. Should be able to use shift or control to select multiple files to diff.
If need more clarity on the issue, see https://youtu.be/4hLlQzepAlg?t=413 (6 min 53 seconds, if that link does not deliver you to the right place)
Add functionality so the user can browse through the full diff between two commits:
Allow the user to manage its credentials when logging in
Merge the path cache management into the RevisionsCache and unify the way of accessing it
Hey there, huge fan of this repo. My prayers for a good linux git client have been answered! (plus qt to boot ;) )
One of my co-workers is currently using Win10. Is it possible to build this on Windows 10?
Thanks!
When more than 1 file is changed and trying to revert all changes in the context menu, it doesn't work.
Right now, GitQlient asks for Git config only if global Git config is not present.
The configuration should be editable at any moment for each repository.
On 4k monitors the size in most of the widgets and styles is set in pixels. That needs a conversion and adaptation.
See guide: https://doc.qt.io/qt-5/highdpi.html
The app crashes when the action update is performed in the branches view
The Git class right now holds all the Git methods from all scopes. For readability and extensibility purposes it should be divided in different scopes.
Add an interactive screen so the user can edit previous commits that are not pushed.
Right now there is a lot of undocumented features and functionality that should be known.
Add an icon to the executable
Building GitQlient on a Windows machine with Qt 5.12.2 with MinGW (GCC 7.3) cuases the following build error:
g++ -c -fno-keep-inline-dllexport -Werror -O2 -std=gnu++1z -Wall -W -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -IQLogger -I..\Qt\5.12.2\mingw73_32\include -I..\Qt\5.12.2\mingw73_32\include\QtWidgets -I..\Qt\5.12.2\mingw73_32\include\QtGui -I..\Qt\5.12.2\mingw73_32\include\QtANGLE -I..\Qt\5.12.2\mingw73_32\include\QtCore -Irelease -I. -I..\Qt\5.12.2\mingw73_32\mkspecs\win32-g++ -o release\namespace_def.o namespace_def.cpp namespace_def.cpp: In function 'bool QGit::writeToFile(const QString&, const QString&, bool)': namespace_def.cpp:113:75: error: unused parameter 'setExecutable' [-Werror=unused-parameter] bool QGit::writeToFile(const QString &fileName, const QString &data, bool setExecutable) ^~~~~~~~~~~~~ namespace_def.cpp: In function 'bool QGit::writeToFile(const QString&, const QByteArray&, bool)': namespace_def.cpp:137:78: error: unused parameter 'setExecutable' [-Werror=unused-parameter] bool QGit::writeToFile(const QString &fileName, const QByteArray &data, bool setExecutable) ^~~~~~~~~~~~~
Right now a click over the item in the unstaged files list adds the file to the staged files list. There is no behaviour implemented for the double click.
This is counter-intuitive since the double click opens the diff in the tree view of the repository.
Change to implement
I created a desktop file but seems that qgitclient doesn't accept as first parameter the folder to open with this tool.
[Desktop Entry]
Type=Service
Encoding=UTF-8
Actions=OpenWithQGitClient
ServiceTypes=KonqPopupMenu/Plugin,inode/directory
ExcludeServiceTypes=kdedevice/*
[Desktop Action OpenWithQGitClient]
Name=Open with QGitCLient
Exec=/path/GitQlient/GitQlient %d
The headers need doxygen documentation that helps the developer to understand whats everything is doing.
examples here: https://github.com/ubuntu/snapcraft-desktop-helpers
Add more options to rename, add message and delete a stash
Right now the blame view is a list of labels. It would be great if the user could select the text.
File blaming should be opened in a tab. It should show the starting commit where the files is being blamed. This is a pre-requirement for #34.
I've downloaded plugin for QtCreator 4.11 (libGitQlientPlugin_1.0.0-qtc4.11.x.dylib
), but it actually needs some components of version 4.10:
Could not resolve dependency 'Core(4.10.0)'
Could not resolve dependency 'ProjectExplorer(4.10.0)'
When the user selects another commit in the history it should open a new blame window showing those changes.
Some issues with escaping characters has been reported for quotation mark and asterisk.
To compile is required to download also the git submodules but this is not clear until someone try to compile it.
When amending a commit the files modified out of that specific commit doesn't appear in the files list.
Hello,
I tried to compile it to OS/2 with Qtv5.13.1
But i get error when running make...
../app/AGitProcess.cpp: In constructor 'AGitProcess::AGitProcess(const QString&)':
../app/AGitProcess.cpp:102:18: error: 'qOverload' was not declared in this scope
connect(this, qOverload<int, QProcess::ExitStatus>(&AGitProcess::finished), this, &AGitProcess::onFinished,
^
../app/AGitProcess.cpp:102:28: error: expected primary-expression before 'int'
connect(this, qOverload<int, QProcess::ExitStatus>(&AGitProcess::finished), this, &AGitProcess::onFinished,
^
../app/AGitProcess.cpp:102:53: error: expected primary-expression before '>' token
connect(this, qOverload<int, QProcess::ExitStatus>(&AGitProcess::finished), this, &AGitProcess::onFinished,
^
make[1]: *** [debug/AGitProcess.obj] Error 1
make[1]: *** Waiting for unfinished jobs....
../app/ConfigWidget.cpp: In member function 'QWidget* ConfigWidget::createConfigWidget()':
../app/ConfigWidget.cpp:173:23: error: 'qOverload' was not declared in this scope
connect(mBtnGroup, qOverload(&QButtonGroup::buttonClicked), this, [this, stackedWidget](int index) {
^
../app/ConfigWidget.cpp:173:33: error: expected primary-expression before 'int'
connect(mBtnGroup, qOverload(&QButtonGroup::buttonClicked), this, [this, stackedWidget](int index) {
^
make[1]: *** [debug/ConfigWidget.obj] Error 1
make[1]: Leaving directory `E:/qt5-src/gitqlient/os2-debug'
make: *** [debug] Error 2
Any thoughts ???
If a change is done in a commit so it has more parents, the graph is incorrect when refreshing the view
Add the following options into the blame history log:
The "view file diff" action should be triggered when double click on the row as well.
After pressing the refresh button, if the user clicks the repository view, the info of the commit is not loaded
If remote repo is not named origin, top right box shows "fatal:ambiguous".
Only two examples right now, but I have one repo where I have named the remote "github" that one shows fatal:ambiguous. I have another repo where it's named origin and I can correctly see the great data you're surfacing of how many commits ahead a particular branch is.
When the user loads an existing repo, show a custom progress bar that gives feedback about the process
A lot of 2019 copyright years in files.
If Git hasn't been configured ever before starting GitQlient, open the configuration UI.
The UI should contain:
The work in progress widget show the untracked/unstaged/staged files with the full path. This makes it difficult to read when the path is long. It doesn't show a scroll bar, for instance.
When a user clones a project or opens it for the first time, ask if they want to add the local Git config to it.
There is a problem parsing the title and the description when amending a commit. For that reason the amend action doesn't happen.
Add functionality so the user can browse through the full diff between two commits:
When the user loads a new repo, show a custom progress bar that fives feedback about the process
Add an option to be able to squash commits using the UI
Create a UI that allows the user to manage merges:
Create a new UI so the user can compare files between commits in parallel and not by change
It is possible to disable it?
This is creating that folder where I don't need that.
Maybe is possible to configure in /tmp
?
Documentation of how GitQlient works and its internal workflows is needed.
I have the last version of qlogger but on compile I get that:
QLogger/QLogger.cpp:73:113: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘const QVector<QVariant>&’
73 | { message, static_cast<int>(level), QDateTime::currentDateTime().toString("dd-MM-yyyy hh:mm:ss.zzz") });
| ^
In file included from QLogger/QLogger.cpp:1:
QLogger/QLogger.h:241:69: note: initializing argument 2 of ‘void QLogger::QLoggerManager::queueMessage(QString, const QVector<QVariant>&)’
241 | void queueMessage(const QString module, const QVector<QVariant> &logData);
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
QLogger/QLogger.cpp: In member function ‘void QLogger::QLoggerManager::writeAndDequeueMessages(const QString&)’:
QLogger/QLogger.cpp:175:44: error: invalid use of incomplete type ‘class QVector<QVariant>’
175 | const auto message = element.value().at(0).toString();
| ~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1204,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qiterator.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
QLogger/QLogger.cpp:176:64: error: invalid use of incomplete type ‘class QVector<QVariant>’
176 | const auto level = static_cast<LogLevel>(element.value().at(1).toInt());
| ~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1204,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qiterator.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
QLogger/QLogger.cpp:177:39: error: invalid use of incomplete type ‘class QVector<QVariant>’
177 | const auto dt = element.value().at(2).toString();
| ~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1204,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qiterator.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h: In instantiation of ‘struct QMapNode<QString, QVector<QVariant> >’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:422:51: required from ‘const Key& QMap<K, V>::iterator::key() const [with Key = QString; T = QVector<QVariant>]’
QLogger/QLogger.cpp:171:39: required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:113:7: error: ‘QMapNode<Key, T>::value’ has incomplete type
113 | T value;
| ^~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1204,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qiterator.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h: In instantiation of ‘class QTypeInfo<QVector<QVariant> >’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:129:79: required from ‘void QMapNode<Key, T>::destroySubTree() [with Key = QString; T = QVector<QVariant>]’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:248:13: required from ‘void QMapData<Key, T>::destroy() [with Key = QString; T = QVector<QVariant>]’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:339:43: required from ‘QMap<K, V>::~QMap() [with Key = QString; T = QVector<QVariant>]’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:1187:7: required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: error: invalid application of ‘sizeof’ to incomplete type ‘QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: error: invalid application of ‘sizeof’ to incomplete type ‘QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h: In instantiation of ‘QMapData<Key, T>::Node* QMapData<Key, T>::createNode(const Key&, const T&, QMapData<Key, T>::Node*, bool) [with Key = QString; T = QVector<QVariant>; QMapData<Key, T>::Node = QMapNode<QString, QVector<QVariant> >]’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:811:11: required from ‘QMap<K, V>::iterator QMap<K, V>::insertMulti(const Key&, const T&) [with Key = QString; T = QVector<QVariant>]’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:1207:39: required from ‘typename QMap<K, V>::iterator QMultiMap<K, V>::insert(const Key&, const T&) [with Key = QString; T = QVector<QVariant>; typename QMap<K, V>::iterator = QMap<QString, QVector<QVariant> >::iterator]’
QLogger/QLogger.cpp:160:45: required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:230:17: error: invalid use of incomplete type ‘class QVector<QVariant>’
230 | new (&n->value) T(v);
| ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1204,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qiterator.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QMap:1,
from QLogger/QLogger.h:36,
from QLogger/QLogger.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QVariant>’
193 | Q_DECLARE_MOVABLE_CONTAINER(QVector);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:1442: QLogger.o] Error 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.