[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
4. Help for new developers
Content:
4.a. Using CVS
Introduction
This guide is not intended to be a manual on using CVS; for that, take a look at
the CVS info page or /doc/en/cvs-tutorial.xml.
Instead, this guide focuses specifically on using CVS and Repoman in Gentoo's
ebuild tree.
Configuration
Typically, you'll want something along these lines in your ~/.cvsrc:
Code Listing 1.1: ~/.cvsrc |
cvs -q -z0
diff -u -B
checkout -P
update -d -P
|
Finally, many people using CVS like to use compression (-z#). We ask that
developers who are not on dialup connections please use -z0 - with the contents
of our CVS repository and the load on our CVS server, you actually experience a
speed increase without compression.
Checking out from CVS/SVN
There are a few useful modules in Gentoo's CVS repository. Ebuilds are kept in
the gentoo-x86 module. gentoo contains the XML
for the website, documentation, developer directories, developer pictures,
and so on. gentoo-projects contains various projects and generally
replaces the gentoo-src cvs module. gentoo-src is
kept around for history, please transition to a different cvs module if you
are still using it.
Code Listing 1.2: Checking out gentoo-x86 |
$ cvs -d username@cvs.gentoo.org:/var/cvsroot co gentoo-x86
|
Before working in the tree at any time, it's always a good idea to do an
update to check for changes and prevent conflicts. You can update in any
subdirectory of the tree if you don't want to wait for a tree-wide update, but
from time to time it's a good idea to update your entire tree:
Code Listing 1.3: Updating in gentoo-x86 |
$ cd gentoo-x86
$ cvs update
|
Gentoo also offers subversion services for those who prefer SVN over CVS.
Many core projects such as portage and baselayout
are hosted here now.
Code Listing 1.4: Checking out portage |
$ svn co svn+ssh://username@cvs.gentoo.org/var/svnroot/portage
|
Updating Portage
If you want to use CVS as your primary Portage tree, you can add the following
lines to /etc/make.conf, replacing you with your username:
Code Listing 1.5: Changing /etc/make.conf for use with CVS |
SYNC="cvs://you@cvs.gentoo.org:/var/cvsroot"
CVSROOT=":ext:you@cvs.gentoo.org:/var/cvsroot"
|
Note:
Due to the fact that the cvs checkout has no metadata cache, your portage may
become really slow
|
On supported architectures, you should also have sandbox in your
FEATURES to ensure ebuilds do not modify the root filesystem
directly.
Adding/Removing packages
Say you're ready to add a brand new package, foo, in app-misc:
Code Listing 1.6: Adding a package |
$ cd $CVSROOT/app-misc
$ cvs update
$ mkdir foo
$ cvs add foo
$ cd foo
$ cp /path/to/foo-1.0.ebuild ./
$ repoman manifest
$ ${EDITOR} metadata.xml
$ cvs add foo-1.0.ebuild metadata.xml files
$ echangelog "New ebuild for foo. Ebuild written by me. Fixes bug #XXXXXX."
|
See the Gentoo Metadata section for more
information on metadata.xml.
At this point, you're ready to commit (see the section on Commits
below). But what if you want to remove foo-1.0 when foo-1.1 is out?
Code Listing 1.7: Removing old versions |
$ cd $CVSROOT/app-misc/foo
$ cvs update
$ cvs remove -f foo-1.0.ebuild
|
And now you're ready to commit (see the section on Commits below).
Commits
Always use repoman commit rather than cvs commit. Repoman is a
quality assurance (QA) tool that performs basic checks and creates Manifests. If
any part of repoman's output is unclear, please see man repoman.
Additionally, you may tire of entering your key passphrase repeatedly; keychain
(http://www.gentoo.org/doc/en/keychain-guide.xml) can help you.
Code Listing 1.8: Using repoman |
$ repoman scan
$ repoman commit
|
Speeding CVS up
If you have noticable high ping times to the cvs server, you might want to use
the ssh master slave setup where you only connect to the other ssh server once
and let it do the next commands over that connection. This way you save the
handshake overhead which may speed up the whole checkout/commit by factor 3.
Just add the code snippet given below to your config.
Code Listing 1.9: ~/.ssh/config |
Host cvs.gentoo.org
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
ControlPersist 3600
|
4.b. Miscellaneous
Putting files on mirrors
Distfiles are automatically fetched by the Gentoo Mirror System. You only need to
monitor your distfiles for fetch errors. Please see the
Distfiles Overview Guide
for comprehensive instructions.
Mail and Web
Our infrastructure allows developers to manage their own mail.
http://www.gentoo.org/proj/en/infrastructure/dev-email.xml
contains instructions on configuring your @gentoo.org mail.
Developers have access to webhosting, http://dev.gentoo.org/~$YOURNAME. Please
see the Webspace
Configuration Guide for details.
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-2.5 license. The Gentoo Name and Logo Usage Guidelines apply.
|