- git is a complex source code repository management system that completely relies on file transactions
- this means: there is no running service or open port (except if git-over-ssh is used, all it needs for network multi developer cooperation is a safe-as-possible ssh server)
- it is also possible to clone a repository locally:
-
cd /home/user/temp
-
git clone /home/user/projects/test.git; # would clone-checkout that repo into temp
-
- requirements:
- should support git over ssh very well
- should be easy to use and get started
- that’s the whole point of such a program, making a complex system simple = accessible = usable
- should be cross-os so users can help each other howto do this and that
- should work reliably
- should help solve gitty problems
- when researching git guis in 2024:
- check this out:
hostnamectl; # tested with
Static hostname: debian12
Virtualization: kvm
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.1.0-18-amd64
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 1.16.2-debian-1.16.2-1
- written in perl even hosted where the git src are hosted on kernel.org (the Linus approved gui?)
- https://git-scm.com/docs/gitk
- install like:
-
su - root
-
apt update; apt install gitk git-gui; # start it like git gui
- look like this:
- there is more to be found here: “Cogito (originally git-pasky) is a revision control system layered on top of Git. It is historically the first Git frontend, which appeared in April 2005″ (src)
- SmartGit by syntevo.com (download) Made in Germany + Austria (?) (syntevo GmbH)
-
- + cross-os
- + dark-theme available 😀
- + “free of charge by open-source developers, employees and students of public academic institutions and employees of public charitables organizations primarily targeting philanthropy, health research, education or social well-being” (src) 😀 (here is the licence text)
- problem: the user or developer will still have to signup and register at syntevo GmbH and prove that somehow
- how to setup and git clone a repo via ssh with SmartGit:
- # as non-root user “user”
- mkdir ~/software
- cd ~/software
- download (current version)
- unpack
- tar fxvz smartgit-linux-23_1_2.tar.gz
- start it
- /home/user/software/smartgit/bin/smartgit.sh
- # as non-root user “user”
- so when adding a git repo via ssh make sure to use this url:
- ssh://user@192.168.122.1:/home/user/projects/test.git
- not this url: git clone user@192.168.122.1:/home/user/projects/test.git
- it’s a bit pricey: there are several modes
- test phase: ~ 30 days trial evaluation period
- subscription: $59 per year
- one-time-payment including 1 to 3 year support and updates:
-
- 1 year of updates and support: $109
- 2 year of updates and support: $147
- 3 year of updates and support $182
- user can use a single license for up to 5 real or virtual machines <- this is pretty cool actually
-
- it reported:
- “Following GTK3 theme was detected: Menta (GTK version: 3.24.38).”
“If you experience some strange GUI problems, please try to add following line to:”
echo “org.eclipse.swt.internal.gtk.noThemingFixes=true” >> ~/.config/smartgit/23.1/smartgit.properties
- “Following GTK3 theme was detected: Menta (GTK version: 3.24.38).”
- how to integrate smartgit with eclipse?
- well it was not so obvious at first but now it seems to work
- eclipse is using-implementing EGit plugin for git
- https://wiki.eclipse.org/EGit/User_Guide
- here is a getting started howto
- assuming the dev has created a git repo like this available via passwordless ssh public-private-key auth
- eclipse:
- ShowView -> Others -> select everything git
- this will open this view where “Clone repo”
- enter repo url like the dev would from terminal: git clone user@ip.of.server:/home/user/projects/gitenabledproject
- it might sound like “basics” functions like simple r-click on file to tell git to ignore that file are VERY VERY GOOD 🙂
- often over-committing happens including .metadata project files
- smartgit: open repo -> select the local folder ~/projects/projectname)
- eclipse is using-implementing EGit plugin for git
- gitkraken.com
- just4info: written in C#
- + it surely looks nice
- + cross-os
- – pricey monthly subscription
- – free trial only for 7 days #wtf?
- – not open source (proprietary license)
- well it was not so obvious at first but now it seems to work
- gitahead.com
- https://github.com/gitahead/gitahead
- just4info: written in C++
- – did not compile 🙁 (instructions either oudated or debian-incompatible?)
- + cross-os
- + MIT licence
- howto install: (requires a bit of compilation)
-
su - root # install compiler and build tools apt -y install build-essential module-assistant gcc make cmake perl dkms linux-headers-$(uname -r); apt -y install ninja-build qttools5-dev qttools5-dev-tools apt search qtbase|grep dev; # search for requirements Qt (required >= 5.9) apt -y install qtbase5-dev qtbase5-dev-tools qt6-base-dev Ctrl+D # back to non-root mkdir ~/software cd ~/software git clone https://github.com/gitahead/gitahead.git cd gitahead git submodule init git submodule update cd dep/openssl/openssl ./config -fPIC make cd ~/software/gitahead/ # configure the build mkdir -p build/release cd build # fails cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../. # also fails but with more details cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../. --debug-find-pkg=Qt6LinguistTools -DQT_DEBUG_FIND_PACKAGE=ON qtchooser -print-env QT_SELECT="default" QTTOOLDIR="/usr/lib/qt5/bin" QTLIBDIR="/usr/lib/x86_64-linux-gnu" # tried multiple versions of cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../. -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu
how to automatically git pull download refresh repo with latest changes before editor gui ide start?
even when ChatGPT INSISTS eclipse+egit can do that (somehow, it would not be hard to implement, but it seems this functionality was forgotten) it is possible to script it like this:
vim /scripts/eclipse.sh #!/bin/bash echo "===== refresh download git pull git repos before eclipse start ====" SERVER="IP.OF.GIT.REPO.SRV" echo "... if repo server is available $SERVER" check_connection() { ping -c 1 $SERVER > /dev/null 2>&1 return $? } download_refresh_git_pull_repos() { echo "... then download refresh git pull latest changes of repos" cd /home/user/projects/gitrepo1; git pull; cd /home/user/projects/gitrepo2; git pull; echo "...starting eclipse" /home/user/software/eclipse/install/eclipse/eclipse } while true; do if ! check_connection; then echo "... vpn not available, please start vpn"; sleep 1; else download_refresh_git_pull_repos; break; fi done
how to start it properly?
under most GNU Linux desktops there are terminal programs, that allow:
launch a new terminal: like “gnome-terminal -e cmd” or “xterm -hold -e cmd”
to run a script inside it
mate-terminal -e /scripts/eclipse.sh
liked this article?
- only together we can create a truly free world
- plz support dwaves to keep it up & running!
- (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
- really really hate advertisement
- contribute: whenever a solution was found, blog about it for others to find!
- talk about, recommend & link to this blog and articles
- thanks to all who contribute!