We are presently evaluating GitLab for our source code management. My main part of the evaluation is to port our maintance scripts to the new system, which seems to be problematic, since they frequently require access to specific other repos, by name.
The script that require the broadest access to other repos is a Git Hook script to recursively verify that submodule references pushed to the main production branch are only from specific branches (either upstream ones, or specific branches we create for production).
A second script that require named access is a branch archiving script that automatically push old idle work branches to a different repo. I am given to understand that there is a feature request open for something like this.
A third system we need, is to fetch upstream commits with custom refspecs. We have opened a feature request for that. For scalability, we also need to be able to configure the URLs and refspecs using scripts.
I have, in particular, investigated the APIs and the use of the python-gitlab package as an option for the first script (submodule verification). My evaluation is that those require 10+ lines of code, several API requests, temporary file storage, to do an operation like
git config --blob <commit>:.gitmodules --list
Is my understanding correct?
What I would have preferred to have instead is a file level command that works like Git, but automatically resolves reponames, e.g.
gitlab-git -C foo/bar/baz.git ls-tree that would perform the action in the @hashed repo containing foo/bar/baz.git .
At present, I am planning a hacky workaround: I am going to create a tree of symbolic links to the @hashed repos, and perform most operations inside that tree.
I would, of course, not mind being pointed to command line exectuables suitable for bash script and/or python script processing and which are at least as efficient as direct git commands via symbolic links.
Thanks in advance,
Yngve N. Pettersen