gitea-pulls | ||
pusher | ||
README.md | ||
updatemodules |
Scripts to sync git submodules of a project via pull requests
The git repo in the current directory is expected to have at least one remote pointing to the target project. If that repo is not writable, another one can be used for pushing.
create a config file .settings
in the top level directory of the git submodule project:
# name of the remote to push to as repored by `git remote`
PUSH_REMOTE="joesix"
# username on gitea
PR_SRC_USER="joesix"
# target project for pull requests
PR_PROJECT="mold"
# target repo on gitea
PR_REPO="core"
# token
TOKEN="deadbeef"
# the url for cloning the project. Packages may use an url relative
to that.
PACKAGE_BASE_URL="https://gitea.opensuse.org/mold/core.git"
# relative url for new packages
PACKAGE_RELATIVE_URL="../../rpm"
# remote to to send pull requests to
REMOTE="origin"
# base branch of the target remote
BASE_BRANCH="main"
# optional: fixed date or a filename prefixed with @ to get a stable date for testing
DATE="@token"
# optional: an OBS project with a list of packages
OBSPKGLIST="https://api.opensuse.org/public/source/openSUSE:Factory:Rings:0-Bootstrap"
Scripts:
All scripts use getopt, --help may not always be up to date though :-)
- updatemodules: checks all submodules for updates. For packages
that need to be updated creates
refs/pq/$packagename
. The updated refence there updates the submodule commit reference for updates. It also adds or removes entries from/to.gitmodules
if needed. There's also a--single
option which produces a single reference for all updates. The--status
option show the current state. - pusher: compares the references created by the
updatemodules
script with the specified remote. Pushed pending refs to anupdate_$packagename
ref. Gitea doesn't seem to support refs in subdirs other thanheads
, that's why. Unless the--dry
option is specified, thepusher
script also creates pull requests for pending refs. - gitea-pulls: dialog based script to list, view, merge or close pull requests from the command line.