Difference between revisions of "First Steps with Gitea"
Line 1: | Line 1: | ||
− | Initial script to take the latest version of a module and move it to Gitea. | + | ==Initial script to take the latest version of a module and move it to Gitea.== |
− | |||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
#!/bin/bash | #!/bin/bash | ||
Line 67: | Line 66: | ||
echo "Created $1 Repo in $RemoteRepoURL" | echo "Created $1 Repo in $RemoteRepoURL" | ||
exit 0 | exit 0 | ||
+ | </syntaxhighlight> | ||
− | + | ==Issues:== | |
− | |||
− | |||
# 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. | # 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. | ||
Line 77: | Line 75: | ||
# Are going to hold the rpm's in the git repo as well? Otherwise we need the .gitignore set to *.rpm | # Are going to hold the rpm's in the git repo as well? Otherwise we need the .gitignore set to *.rpm | ||
# I presume we will hold the file tree tar file in git? | # I presume we will hold the file tree tar file in git? | ||
− | # I also presume that we will have one git repo per module? Rather than share a repo across all modules? | + | # I also presume that we will have one git repo per module? Rather than share Importing the a repo across all modules? |
− | + | ||
− | + | ||
− | + | ==Bringing across all the CVS history as well...== | |
+ | |||
+ | According to google, git has a parameter "cvsimport" since version 2.1, however the version in my Rocky 8 system is 2.3.1, but has not such parameter. Latest comments I can find are for 2012, and some say it is not very reliable, so I suspect it has been withdrawn. | ||
+ | |||
+ | Only tool I can find is "cvs-fast-import" which will work with git-fast-import to import all the CVS data (inc history) | ||
+ | |||
+ | No rpms seem to exist, so I am having to build it on the Rocky 8 system (on which I also have CVS installed, and have access to the SME CVS) | ||
+ | |||
+ | Code for cvs-fast-import is here : https://gitlab.com/esr/cvs-fast-export | ||
+ | |||
+ | I needed | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | |||
+ | git clone https://gitlab.com/esr/cvs-fast-export | ||
+ | cd cvs-fast-export | ||
+ | sudo dnf install dnf-plgins-core | ||
+ | sudo dnf install epel-release | ||
+ | sudo dnf config-manager --set-enabled powertools | ||
+ | sudo buildprep --doc | ||
+ | make install-bin | ||
+ | make install | ||
+ | |||
+ | [brianr@rockysmebuild cvs-fast-export]$ cvs-fast-export --help | ||
+ | Usage: cvs-fast-export [OPTIONS] [FILE]... | ||
+ | Parse RCS files and emit a fast-import stream. | ||
+ | |||
+ | Mandatory arguments to long options are mandatory for short options too. | ||
+ | -h --help This help | ||
+ | -g --graph Dump the commit graph | ||
+ | -V --version Print version | ||
+ | -w --commit-time-window=WINDOW Time window for commits(seconds) | ||
+ | -c --content-only Don't trust commit-IDs | ||
+ | -l --log=LOG_FILE Log file | ||
+ | -a --authorlist Report committer IDs from repository | ||
+ | -A --authormap=AUTHOR_MAP Author map file | ||
+ | -R --revision-map=REV_MAP Revision map file | ||
+ | -r --reposurgeon Issue cvs-revision properties | ||
+ | -T Force deterministic dates | ||
+ | -e --remote=REMOTE Relocate branches to refs/remotes/REMOTE | ||
+ | -s --strip=PREFIX Strip the given PREFIX instead of longest common prefix | ||
+ | -p --progress Enable load-status reporting | ||
+ | -P --promiscuous Process files without ,v extension | ||
+ | -v --verbose Show verbose progress messages | ||
+ | -q --quiet Suppress normal warnings | ||
+ | -i --incremental=TIME Incremental dump beginning after specified RFC3339-format TIME. | ||
+ | -t --threads=N Use threaded scheduler with N threads for CVS master analyses. | ||
+ | -E --embed-id Embed CVS revisions in the commit messages. | ||
+ | |||
+ | Example: find | cvs-fast-export | ||
+ | [brianr@rockysmebuild cvs-fast-export]$ | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | It includes a "cvsconvert" script which runs cvs-fast-convert and writes to a git repo. | ||
+ | |||
+ | HOWEVER it needs access to the CVS files, not just the cvs client! |
Revision as of 12:07, 8 February 2023
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:
- 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.
- Need ssh access to gitea for automatic creation of repos, else each one has to be created by hand!
- Realising that I need the contribs10/11/12 directories under the module name if I am going to get make mockbuild to work.
- Are going to hold the rpm's in the git repo as well? Otherwise we need the .gitignore set to *.rpm
- I presume we will hold the file tree tar file in git?
- I also presume that we will have one git repo per module? Rather than share Importing the a repo across all modules?
Bringing across all the CVS history as well...
According to google, git has a parameter "cvsimport" since version 2.1, however the version in my Rocky 8 system is 2.3.1, but has not such parameter. Latest comments I can find are for 2012, and some say it is not very reliable, so I suspect it has been withdrawn.
Only tool I can find is "cvs-fast-import" which will work with git-fast-import to import all the CVS data (inc history)
No rpms seem to exist, so I am having to build it on the Rocky 8 system (on which I also have CVS installed, and have access to the SME CVS)
Code for cvs-fast-import is here : https://gitlab.com/esr/cvs-fast-export
I needed
git clone https://gitlab.com/esr/cvs-fast-export
cd cvs-fast-export
sudo dnf install dnf-plgins-core
sudo dnf install epel-release
sudo dnf config-manager --set-enabled powertools
sudo buildprep --doc
make install-bin
make install
[brianr@rockysmebuild cvs-fast-export]$ cvs-fast-export --help
Usage: cvs-fast-export [OPTIONS] [FILE]...
Parse RCS files and emit a fast-import stream.
Mandatory arguments to long options are mandatory for short options too.
-h --help This help
-g --graph Dump the commit graph
-V --version Print version
-w --commit-time-window=WINDOW Time window for commits(seconds)
-c --content-only Don't trust commit-IDs
-l --log=LOG_FILE Log file
-a --authorlist Report committer IDs from repository
-A --authormap=AUTHOR_MAP Author map file
-R --revision-map=REV_MAP Revision map file
-r --reposurgeon Issue cvs-revision properties
-T Force deterministic dates
-e --remote=REMOTE Relocate branches to refs/remotes/REMOTE
-s --strip=PREFIX Strip the given PREFIX instead of longest common prefix
-p --progress Enable load-status reporting
-P --promiscuous Process files without ,v extension
-v --verbose Show verbose progress messages
-q --quiet Suppress normal warnings
-i --incremental=TIME Incremental dump beginning after specified RFC3339-format TIME.
-t --threads=N Use threaded scheduler with N threads for CVS master analyses.
-E --embed-id Embed CVS revisions in the commit messages.
Example: find | cvs-fast-export
[brianr@rockysmebuild cvs-fast-export]$
It includes a "cvsconvert" script which runs cvs-fast-convert and writes to a git repo.
HOWEVER it needs access to the CVS files, not just the cvs client!