Skip to main content

Multigit is a graphical tool designed to simplify working with projects composed of multiple git repositories.

Project description

Checked with mypy Continuous Integration

Multigit

by Philippe Fremy at IDEMIA (philippe.fremy at idemia.com)

Multigit is a graphical tool for working with projects composed of multiple git repositories.

If you think that submodules, subtree or Google repo are not for you, you are probably at the right place.

Typically, it lets you:

  • fetch or pull on many repositories at the same time
  • identify visually which repositories are modified or need an update (push or pull)
  • create a new branch in a subset of repositories
  • switch to a branch existing only in some repositories (but you don't remember which one)
  • perform a commit on multiple repositories at the same time, and push it
  • launch your preferred git frontend on an interesting repository
  • export your repositories state to a file, for reproducing it on a colleagues computer
  • and more...

https://github.com/user-attachments/assets/42327500-bc9d-4b52-82fd-b7dc85aff145

The need arose from my work environment, where a project typically consists of thirty to fifty git repositories. In such environment, every simple git operation becomes a complex task. Thank to Multigit, it becomes simple again. Any git operation like git fetching in the morning is run on all the repositories in one click. When time comes to commit changes and push them, having a graphical interface to locate in the blink of an eye which repositories are modified and need a commit has been a life saver.

Multigit is Open source and developed in Github. It has been developed intially within my employer IDEMIA. I would like to thank them again for allowing me to open source it.

Status

Multigit has been used widely for several years within IDEMIA, it's mature and stable.

Platform support:

  • Windows: rock-stable, primary development platform, used everyday
  • Linux: stable, but small user base so far. Validated on: Ubuntu 22.04, Ubuntu 24.10 and Linux Mint 22
  • MacOs X: working, but with limited user base so far

Installation

Multigit is installation is possible through different formats and on different platforms:

Windows

Classic installer

Classic Windows installer is available on the GitHub release page as Multigit.OpenSource.X.Y.Z.exe. Just run it and look for Multigit in your Applications.

Chocolatey package

Multigit is available as a Chocolatey package, which is the recommended way to install it on Windows. Just run:

    choco install multigit

Linux

Python package

Multigit is available as a Python package on PyPi, but it is recommended to use pipx to install it, as it will be installed in an isolated environment and will not interfere with your system Python or other Python packages.

    $ sudo apt install pipx
    $ pipx install multigit_gx
    $ pipx ensurepath
    (open a new terminal to have pipx in PATH)
    $ multigit

Note: on PyPi, Multigit is registered as multigit_gx because there is already a multigit software . The recommended way is to use pipx to install it:

Adjustments when running on Linux

On Ubuntu:

If you are getting the following error when running Multigit:

qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: offscreen, wayland-egl, vnc, eglfs, minimal, vkkhrdisplay, linuxfb, wayland, minimalegl, xcb.

Aborted

You need to install libxcb-cursor0:

sudo apt install libxcb-cursor0

Then it works.

On a Gnome desktop (typically Ubuntu or Linux Mint)

By default, Qt application have no window borders or decorations, making them difficult to spot. The fix is to install Qt theme or Qt plugin to your desktop environment.

This worked for me by for example:

sudo apt install libxcb-cursor0 libxcb-composite0 
export QT_QPA_PLATFORM=xcb

Future

We are working on providing multigit as a snap and as a flatpak, but it is not available yet.

License

Multigit is released under the Apache 2.0 license.

Multigit depends on several other open source projects:

  • Python
  • PySide/Qt for Python
  • Concurrent Log Handler
  • PyInstaller

See the file FULL_LICENSING_INFORMATION.md for details.

Contributions

Contributions are welcome: bug reports, improvements, pull requests. They must be under the Apache 2.0 license.

Multigit is developed both as an open source version and internally at IDEMIA. I will make sure that the Open Source versions thrives. The plan is to share improvements done internally at IDEMIA to the Open Source version on a regular basis.

See the file CONTRIBUTING.md for details .

If you want to exchange with the author, do not hesitate to contact me: philippe.fremy at idemia.com

History and Alternatives

When I started to search how to solve the run one operation on multiple git repositories problem, the only tool I found was Google's repo . But it did not fit my requirements:

  • It is command-line based but I wanted a graphical tool
  • It requires to learn a new set of commands to operate, whereas I wanted to keep the git process and knowledge.

I also looked at git submodules but for the same reason, I did not like this solution: not graphical, complexifies the workflow and requires learning a new set of commands.

So, Multigit was born. Internally at IDEMIA, people love it for how it made their life simpler in environments with 40 git repositories, without a learning curve for a new tool. Just use your git knowledge.

Since the development of Multigit, other tool with similar functionality have emerged (some of them also named Multigit). However, from my last inspection, they are all command-line tools. Multigit is the only one providing a graphical interface.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multigit_gx-1.8.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multigit_gx-1.8.0-py3-none-any.whl (651.4 kB view details)

Uploaded Python 3

File details

Details for the file multigit_gx-1.8.0.tar.gz.

File metadata

  • Download URL: multigit_gx-1.8.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

File hashes

Hashes for multigit_gx-1.8.0.tar.gz
Algorithm Hash digest
SHA256 d65e0ec3495f0547c6ea16c2d8ff8bed33a624b2a106a8d50126e7d3200e85bd
MD5 383a8c1c9b200e56e38257e36e7c2589
BLAKE2b-256 3454daaf94fb94fdc2460313fde655d3fdc7072296cd4505f96ab218875d9a8a

See more details on using hashes here.

File details

Details for the file multigit_gx-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: multigit_gx-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 651.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

File hashes

Hashes for multigit_gx-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 749684a5c9d718226e85455753706490b96a881ee677ba15fb0a2b222ce0f24a
MD5 6d8032434e226d964a881a2aee22f0be
BLAKE2b-256 4f4d54f7bf12c6fa7b4091d9a902042725d7667f3326e8954036559aa5d1c192

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page