57 lines
2.2 KiB
Markdown
57 lines
2.2 KiB
Markdown
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: OBS projects with a list of packages
|
|
OBS_PROJECTS="openSUSE:Factory:Rings:0-Bootstrap"
|
|
```
|
|
|
|
Scripts:
|
|
|
|
All scripts use getopt, --help may not always be up to date though
|
|
:-)
|
|
|
|
- obspkglist: given obs projects, prints all packages in those projects that
|
|
are also in gitea
|
|
- 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. Use --packages-from to read a package list produced by `obspkglist`.
|
|
With the list the script can also add or drop packages.
|
|
- 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.
|