tech-repository archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Parallel git and cvs workflow with git-cvsexportcommit
Hi,
I've been using git for pkgsrc development since the beginning (which for me is sometime 2013).
After preparing my changes in git I manually transferred those to cvs with "patch" and "cvs commit".
After some discussions at pkgsrcCon I came across git-cvsexportcommit [1].
It was just tested with the update to nano and worked well.
This command simplifies my workflow quite a bit, so let me explain my setup - maybe this is of interest to others.
### Abstract
You'll need two parallel copies of the tree: one using git and one using cvs.
To get changes from git into cvs it uses git-cvsexportcommit.
Git has many benefits like local commits, easy branching, atomic commits across multiple files, etc.
I also like to prepare my commit messages and review them before setting them in stone in the eternal history.
### Environment
To setup a basic working environment I use configuration like follows.
Add to ~/.bash_profile:
export CVSEDITOR=$EDITOR
export CVSROOT=$LOGNAME%cvs.NetBSD.org@localhost:/cvsroot
export CVS_RSH=ssh
Add to ~/.cvsrc
# recommended CVS configuration file from the pkgsrc guide
cvs -q -z2
checkout -P
update -dP
diff -upN
rdiff -u
release -d
### CVS
get your cvs tree:
mkdir ~/cvs ~/tmp
cd ~/cvs
cvs checkout pkgsrc
### GIT
checkout Jörgs git conversion [2]:
cd ~/tmp
git clone https://github.com/jsonn/pkgsrc.git
### bootstrap
the git tree will be your working tree:
cd ~/tmp/pkgsrc/bootstrap
./bootstrap --unprivileged
add to ~/.bash_profile
export PATH="~/pkg/bin:~/pkg/sbin:$PATH"
### create your change
as an example let's do a simple update of nano:
cd ~/tmp/pkgsrc/editors/nano
make changes and test them:
$EDITOR Makefile
bmake package
...
stage your changes and commit:
git add Makefile distinfo PLIST
git commit
you now get to review your change as one entitiy, including the commit message:
git show -1
```
commit 3b861ca6563af68aa3c175ebae151d3870c9b5d2
Author: Sebastian Wiedenroth <wiedi%frubar.net@localhost>
Date: Wed Jul 8 22:59:39 2015 +0200
Update nano to 2.4.2
2015.07.05 - GNU nano 2.4.1 "Portorož" is released. This release
includes several fixes, including the ability to resize
when in modes other than the main editing window,
proper displaying of invalid UTF-8 bytes, new syntax
definitions for Elisp, Guile, and PostgreSQL, and
better display of shortcuts in the help menu and file
browser. Thanks for your patience and using nano!
diff --git a/editors/nano/Makefile b/editors/nano/Makefile
index 62fb2c1..c2a4b12 100644
--- a/editors/nano/Makefile
+++ b/editors/nano/Makefile
@@ -1,10 +1,10 @@
# $NetBSD: Makefile,v 1.46 2015/06/05 01:32:38 wiedi Exp $
-DISTNAME= nano-2.4.1
+DISTNAME= nano-2.4.2
CATEGORIES= editors
MASTER_SITES= http://www.nano-editor.org/dist/v2.4/
-MAINTAINER= pkgsrc-users%NetBSD.org@localhost
+MAINTAINER= wiedi%frubar.net@localhost
HOMEPAGE= http://www.nano-editor.org/
COMMENT= Small and friendly text editor (a free replacement for Pico)
LICENSE= gnu-gpl-v3
diff --git a/editors/nano/PLIST b/editors/nano/PLIST
index 7d4f944..1ecfdd4 100644
--- a/editors/nano/PLIST
+++ b/editors/nano/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.18 2015/06/05 01:32:38 wiedi Exp $
+@comment $NetBSD$
bin/nano
bin/rnano
info/nano.info
@@ -50,10 +50,12 @@ share/nano/cmake.nanorc
share/nano/css.nanorc
share/nano/debian.nanorc
share/nano/default.nanorc
+share/nano/elisp.nanorc
share/nano/fortran.nanorc
share/nano/gentoo.nanorc
share/nano/go.nanorc
share/nano/groff.nanorc
+share/nano/guile.nanorc
share/nano/html.nanorc
share/nano/java.nanorc
share/nano/javascript.nanorc
@@ -70,6 +72,7 @@ share/nano/patch.nanorc
share/nano/perl.nanorc
share/nano/php.nanorc
share/nano/po.nanorc
+share/nano/postgresql.nanorc
share/nano/pov.nanorc
share/nano/python.nanorc
share/nano/ruby.nanorc
diff --git a/editors/nano/distinfo b/editors/nano/distinfo
index 6b372a5..3420686 100644
--- a/editors/nano/distinfo
+++ b/editors/nano/distinfo
@@ -1,6 +1,6 @@
$NetBSD: distinfo,v 1.20 2015/06/05 01:32:38 wiedi Exp $
-SHA1 (nano-2.4.1.tar.gz) = 422958cb700cc8cedc9a6b5ec00bf968c0fa875e
-RMD160 (nano-2.4.1.tar.gz) = 84bd54e50b5e8c6457d983dc7ef730b5a0303bf8
-Size (nano-2.4.1.tar.gz) = 1890805 bytes
+SHA1 (nano-2.4.2.tar.gz) = bcf2bb3fcc04874cb38c52cfd8feebce61dd5e0a
+RMD160 (nano-2.4.2.tar.gz) = 6a3d0569740c223230af6ae88f8ef0797402c4c2
+Size (nano-2.4.2.tar.gz) = 1898633 bytes
SHA1 (patch-configure) = 3a63b02a39000d5a15087739648b82e999d14f56
```
You can take this diff and apply it to different systems for testing. This is very easy with git.
Once you are happy you can commit to CVS.
### commiting
cd ~/tmp/pkgsrc/
git cvsexportcommit -w ~/cvs/pkgsrc/ -pcv 3b861ca6563af68aa3c175ebae151d3870c9b5d2
This will commit (-c) if the change with the id 3b861ca6563af68aa3c175ebae151d3870c9b5d2 applies cleanly (-p for paranoid).
Keepking CHANGES and TODO up to date:
~/cvs/pkgsrc/editors/nano
bmake changes-entry
cd ../../doc
cvs diff
cvs commit CHANGES-2015
The reason to not prepare this in the git commit is that the CHANGES file is updated very frequently and will conflict with the strict settings used with cvsexportcommit.
### keeping both trees updated
before starting a new change update your git tree:
git pull
As you now have git you can also rebase easily onto more recent changes from upstream.
Before commiting update your cvs tree:
cvs update -d
And thats it. Comments welcome.
Best regards,
Sebastian
[1] https://www.kernel.org/pub/software/scm/git/docs/git-cvsexportcommit.html
[2] https://github.com/jsonn/pkgsrc
Home |
Main Index |
Thread Index |
Old Index