Closed band-a-prend closed 3 years ago
Hi @band-a-prend
One of the reasons why I didn't implement yet the support for libgit2 is because it's not only one library as it's sold. If I'd want credentials I'd have to install openssh. I know is widely used but it adds a heavy dependenci(es) to GitQlient, what is something I'm trying to avoid. It would bring, in addition a deep refactor to all the core cache I've done so far.
Said that, I like the optional part, although I don't think I have time for this huge optional feature right now if someone wants to try I'm open for it :smile:
Last concern that comes to my mind now is how an optional dependency would work with DEB and RPM packages.
The significant refactoring for feature is a real problem. I'm also like approach of minimisation of library dependencies.
I don't know about rpm packaging but in Debian some packages have recomended
dependencies that isn't abligatory but add additional features, e.g. dolphin-pluhins
for dolphin
file manager in kde.
Anyway the feature is really rather huge :(
I consider it a fair demand, actually! But I thought it was good as well to have a bit of background about why is this way.
In addition to all of that I must say that this was in the beginning a fork of QGit with the aim of improving the UI and modernizing the code. I just got too excited and it has grown a lot :sweat_smile:
I've also tried to fork qgit to implement libgit2 support, but quickly surrendered.
libgit2 API is too low-level, and don't resemble git
commands with all of it options.
I suspect implementation of all this stuff will require several months of hardcore pure C coding libgit2 itself first.
However, there is no need to rewrite entire gitqlient code with libgit2 usage.
It can be done by small steps, e.g. at first step open repo and get commit author using examples from https://github.com/libgit2/libgit2/tree/main/examples
P.S. Just idea: GitQlient can ask for sponsorship some Qt-related company dealing with open source: KDE e.v., KDAB and so on. They might be interested in lightweight Git Qt-based GUI
As stated on the libgit2 project:
is a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library with a solid API, allowing you to write native speed custom Git applications in any language which supports C bindings.
libgit2 is licensed under a very permissive license (GPLv2 with a special Linking Exception). This basically means that you can link it (unmodified) with any kind of software without having to release its source code.
Describe the solution you'd like Some heavy operations maybe could be implemented via optional using of libgit2 functions calls.
Also library provide some creditals functions and maybe could be useful for https://github.com/francescmm/GitQlient/issues/21 implementation. Currently
git+ssh
creditals appears in terminal background and least if GitQlient is started from terminal.