First Steps with Gitea

From SME Server
Revision as of 13:07, 7 February 2023 by Brianr (talk | contribs)
Jump to navigationJump to search

Initial script to take the latest version of a module and move it to Gitea.

#!/bin/bash
# $1  = Module name e.g. smeserver-ddclient
# $2 = "contrib" ...anything else -=> core module
LocalUser="brianr"
RemoteUser="brianr"
if [ $2 == "contrib" ]; then
  CVSFiles="/home/$LocalUser/smecontribs/rpms"
else 
  CVSFiles="/home/$LocalUser/smeserver/rpms"
fi
GitFiles="/home/$LocalUser/GitFiles"
RemoteRepoURL="https://src.koozali.org/$RemoteUser/$1"
mkdir -p $GitFiles

#Make sure credentials taken from store
git config --global credential.helper store #The first time you pull or push it will ask for credentials and then save them in a file.

# Clone the CVS repository
cd $CVSFiles
cvs -d:ext:shell.koozali.org:/cvs/smecontribs checkout $1

# Fully populate the directory (gets the tar file - which is not strictly in CVS)
cd $1/contribs10
make prep

# Create the local Git repository
cd $GitFiles
rm -rf $1
git init $1
cd $1
echo `pwd`
#pull in all the files we want
if [ $2 == "contrib" ]; then
    mkdir -p contribs10
    for fpath in "*.patch" "*.spec" "*.gz" "*.tgz" "*.xz" "Makefile" 
    do 
    	cp $CVSFiles/$1/contribs10/$fpath ./contribs10/
    done
else
	mkdir -p sme10
    for fpath in "*.patch" "*.spec" "*.gz" "*.tgz" "*.xz" "Makefile" 
    do 
        cp $CVSFiles/$1/sme10/$fpath ./sme10/
    done
fi

#Get Clone the common directory
git clone https://src.koozali.org/brianr/common.git
# and delete the .git else it pushes back a link to the repo
cd common
rm -fr ".git"
cd ..

#stage and commit them
git add -A
git commit -m "initial commit of file from CVS for $1"

# Create the remote repo and push the converted git repository to the remote
git remote remove origin
git remote add origin $RemoteRepoURL
# Need to have created the repo at this point....
git pull --no-edit origin master
git push -u origin master
echo "Created $1 Repo in $RemoteRepoURL"
exit 0

Issues:

  1. How to partition the repos between smecontribs and core? different User? - smecontribs and smeserver directories? Then module name.With contribs10 / sme10 directories underneath, and also the common directory.
  2. Need ssh access to gitea for automatic creation of repos, else each one has to be created by hand!
  3. Realising that I need the contribs10/11/12 directories under the module name if I am going to get make mockbuild to work.
  4. Are going to hold the rpm's in the git repo as well? Otherwise we need the .gitignore set to *.rpm
  5. I presume we will hold the file tree tar file in git?