1 [[meta date="2007-08-15 16:14:05 +0200"]]
2 Introducing debcheckout
5 Cute little tiny teeny new addition to
6 [devscripts](http://packages.qa.debian.org/devscripts): *debcheckout* (not yet
7 uploaded though, in the mean time you can get it [from
8 here](http://svn.debian.org/wsvn/devscripts/trunk/scripts/debcheckout.pl?op=file&rev=0&sc=0).
9 *It checks out the versioning repository used to maintain a given package*.
13 $ debcheckout devscripts
14 declared svn repository at svn://svn.debian.org/devscripts/trunk
15 svn co svn://svn.debian.org/devscripts/trunk ...
17 A trunk/debian/control
23 Checked out revision 749.
26 The information about where to find a repository is extracted parsing (in a
27 rather dumb way actually, but I really can't stand
28 [libapt-pkg](http://packages.debian.org/unstable/libdevel/libapt-pkg-dev) API!)
29 [[Vcs-XXX_fields|02/xs_vcs_browser]].
33 1. NMU scenarios: when you're NMUing, please commit your patches (if possible of
34 course: directly to the repository if it has already adhered to the [[open
35 your VCS campaign|DD_wide_commit_on_alioth]] I'm sponsoring, or somewhere
36 else if you're using a distributed VCS); with debcheckout the first step it's
39 2. ease the creation of patches: isn't it better to checkout a repository,
40 fiddle around, and then just invoke svn (or whatever) diff instead of
41 remembering (I always forgot that!) to first create a .orig copy of the
42 debianized source tree?
44 3. retrieving the bleeding edge version of a package which includes the patch
45 for a pending bug you have been waiting for ages
50 Let me know what you think of debcheckout, feature requests, whatever. In
51 particular let me know if I did something wrong using some VCS, since I'm not
52 proficient in all VCSs supported by debcheckout; for example: I'm quite sure the
53 Arch part is not working ... help is appreciated!
55 Vcs-Cvs proposed convention
58 debcheckout can also give the ground for standardizing the VCS-specific meanings
59 of the various Vcs-XXX fields. In writing it I've noticed that almost all VCSs
60 have de facto standards about what to put in the field, with the notable
61 exception of CVS. That's probably because all modern VCSs rely on some URL-like
62 identifier for a repository location, while CVS does not. It needs a pair
63 URL/module to be checkout.
65 The format I'm currently supporting in debcheckout is a pair of space separated
66 values "CVSROOT MODULENAME"; later on I'm using those values as in <tt>cvs -d
67 CVSROOT checkout MODULENAME</tt>. Also please note that if you do not put the
68 heading ":pserver:" string in the CVSROOT, users won't be able to checkout the
69 repository without providing a password.
71 Tip of the day: Pod::Usage
74 Perl's [Pod::Usage](http://perldoc.perl.org/Pod/Usage.html) module is cool.
75 Finally I can write the usage string only once instead of duplicating it in the
76 manpage and in the string to be printed upon --help. Ruby had something similar,
77 but the output on console was so horrible that I preferred duplicating stuff for
80 **Update**: I've changed the link to debcheckout.pl so that it points to the
81 "live" version in the devscripts repository, since some patches are already
84 [[tag planet/debian debian lang/english qa hack debcheckout vcs]]