changelog | ||
config | ||
git-cvs2git.sh | ||
git-delete-release-in-one-rep.sh | ||
git-edit-readme.sh | ||
git-get-latest-tag.sh | ||
git-get-repo-and-build.sh | ||
git-getperl.sh | ||
git-list-all-org-repos.sh | ||
git-make-release.sh | ||
git-migrate-repo.sh | ||
git-post-create-repo.sh | ||
git-retag.sh | ||
git-transfer-repo.sh | ||
git-update-release-in-one-repo.sh | ||
github-make-push-mirror.sh | ||
parse-list.sh | ||
README.md |
smeserver-gitutils
Utilities to use with smeserver on Koozali.org GITEA instance
Just a repackaging of some of Brian Read's tools with some modifications for the new git structure and some tidy-up of the ini file and debug statements
It's a good idea to have the scripts somewhere in your path (some do call others). You can put them in ~/bin (you may need to create this if it doesn't exist)
config
sample ~/.smegit/config or /etc/smegit.ini file - fill in your details
It will use the user config first and system ini, if user config does not exist
git-cvs2git.sh
copy current cvs version of a package across to git in new structure
git-cvs2git.sh <repository> <organisation> [<local>]
- <repository> repository (package) to be migrated (e.g. smeserver-yum)
- <organisation> can ONLY be smeserver or smecontribs
optional parameters, can appear in any order
- <local> will migrate into your local GITEA (in config), otherwise remote GITEA
- <debug> run in debug mode
git-get-and-build-repo.sh
bring down current git repository and run mockbuild
git-get-and-build.sh <repository> <organisation> [branch=<branch> <local> <debug>]
- <branch=<branch> will bring back a specific branch, otherwise Master
- <repository> repository (package) to be built (e.g. smeserver-yum)
- <organisation> can be any organisation or user on the remote GITEA instance
optional parameters, can appear in any order
- <local> will build from local GITEA (in config), otherwise from remote GITEA
- <debug> run in debug mode
git-migrate-repo.sh
create mirror or copy of src.koozali.org repository in a local GITEA instance
git-migrate-repo.sh <repository> <organisation> [<target organisation> <copy|mirror> <local> <debug>]
- <repository> repository (package) to be copied (e.g. smeserver-yum)
- <organisation> can be any organisation or user on the remote GITEA instance
optional parameters, can appear in any order
- <target organisation> within your local GITEA, otherwise local user - must exist already
- <copy|mirror> will create local repo as either a copy or a mirror of the remote repo (default = copy)
- <local> use local GITEA as source (i.e. copy between organisations on local GITEA)
- <debug> run in debug mode
git-transfer-repo.sh
Transfer a repo to a different user (or organisation)
git-transfer-repo.sh <repository> <source organization> <target organisation> [<local> <force> <debug> <silent>]
- <repository> repository name to be transferred (e.g. smeserver-clamav)
- <source organisation> to be transferred from (any valid organisation or user)
- <target organisation> to be transferred to (any valid organisation or user - you need owner privileges)
optional parameters, can appear in any order
<local> will use parameters set for local repository, else it will use remote <force> will automagically delete an existing target repo, otherwise it will prompt <debug> run in debug mode <silent> suppress success message
git-retag.sh
Create a new tag based on %version-%release in spec file (without trailing el7.sme) and optionally remove old tags
git-retag.sh <repository> <organisation> [<local> <debug> <noisy>]
- <repository> repository to be retagged
- <organisation> organisation\owner that the repository belongs to
optional parameters, can appear in any order
- <purge> will remove all existing tags
- <local> will use parameters set for local repository, else it will use remote
- <debug> run with debug output
- <noisy> will will print a line showing how it was called
parse-list.sh
Parse a list of parameters and execute script with those parameters
parse-list.sh <param file|org='organisation'> <script> [<local> <noisy> <review> <additional*>]
- <param file|org='organisation'> name of file containing parameters or organisation which will be used to generate a list of all repos for input to <script>
- <script> script to run (e.g. rename-e-smith-pkg.sh)
optional params can appear in any order
- <local> used with org= and will use local GITEA instance, default remote - will be passed to <script>
- <noisy> show line being executed
- <review> show line to be executed, but NOT executing
- <additional> additional params to be passed (up to 3) e.g. debug,force,local
example:
parse-list.sh org=smeserver git-migrate-repo.sh review
will echo the command that would be run for each repo in the smeserver organisation on the remote GITEA instance
git-migrate-repo.sh perl-Moo smeserver
git-migrate-repo.sh buildsys-macros smeserver
git-migrate-repo.sh clamav smeserver
...
git-post-create-repo.sh
Update a repo created from a template (contribs,base or 3rd party) with things not able to be updated from the template:
- <repository> repository (package) to be editted (e.g. smeserver-yum)
- <organisation> can be any organisation or user on the remote or local GITEA instance
optional:
- <local> will migrate into your local GITEA (in config), otherwise remote GITEA
Does:
Rename spec file
Set current date in change log
Set Wiki and Issues links external (SME Wiki and Bugzilla)
git-make-release.sh
Create a release and upload the rpm (src and bin) as attachments to that release
- <repository> repository (package) to be editted (e.g. smeserver-yum)
- <draft | prerelease> create draft or prerelease else it will create full stable release
- <organisation> can be any organisation or user on the remote or local GITEA instance
- <release-tag> will have "SME" added to the front of it (so e.g. 10.2 -> SME10.2)
optional: (in any order)
- <local> used with org= and will use local GITEA instance, default remote - will be passed to <script>
- <noisy> show line being executed
- <debug> run in debug mode
- <draft> create a draft release
- <prerelease> create a pre-release
Note that no release type will give a full stable release
Does:
Create the release (deleting one that is the same tag),
Then uploads the .src.rpm and .rpm as an attachment (deleting any one of the same name)
git-list-all-org-repos.sh
List the repos in any one organisation and optionally show the release and some associated fields
- <organisation> can be any organisation or user on the remote or local GITEA instance
optional: (in any order)
- <local> used with org= and will use local GITEA instance, default remote - will be passed to <script>
- <noisy> show line being executed
- <debug> run in debug mode
- <draftrelease> Show all draft releases
- <prerelease> Show all prereleases
- <release> Show all full releases
- <allreleases> Show all releases
- <cloneurl> Show the url to use to clone this repo
- <zipurl> Show the url to get the zipped contents of the repo
- <asseturls> Show the URLs of the assets associated with the release
Does:
Display a "table" of each repo and the optional extras requested.
git-update-release-in-one-repo.sh
Update the release (draft/prerelease/release)
- <organisation> can be any organisation or user on the remote or local GITEA instance
- <repo> name of the repo (package)
- <releasetag> Full tag of the release (inc SME if applicable) OR
- <id>
- draft|prerelease|release
optional: (in any order)
- <local> used with org= and will use local GITEA instance, default remote - will be passed to <script>
- <debug> run in debug mode
Does:
Resets the release specified to the type specified.
git-get-latest-tag.sh
Return the newest tag for the repo
- <repo> name of the repo (package)
- <organisation> can be any organisation or user on the remote or local GITEA instance
github-make-push-mirror.sh
Create a repo on github.com and add a push mirror entry to the equivalent gitea repo.
- <repo> Name of the repo
- <organisation> Name of the organisation in GITEA
- <github organisation> Name of the organisation in GITHUB
Note that .smegit/conf needd GITHUBTOKEN and GITHUBLOGIN the token must have the necessary permissions. Either fine-grain token or one of the orginal tokens. Created through settings/developer tools/api tokens on github.com.
Also need to login in to github using gh auth login
before running the command.