Go to file
2023-03-02 15:43:42 +01:00
gitea-pulls pulls 2023-03-02 15:41:42 +01:00
pusher fixes 2023-03-02 13:43:35 +01:00
README.md Update README 2023-03-02 15:43:42 +01:00
updatemodules fixes 2023-03-02 13:43:35 +01:00

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 an update_$packagename ref. Gitea doesn't seem to support refs in subdirs other than heads, that's why. Unless the --dry option is specified, the pusher 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.