[freetds] $Id and include file

Christos Zoulas christos at zoulas.com
Tue Oct 19 13:59:39 EDT 2004


On Oct 19,  1:09pm, entropy at freetds.org (entropy at freetds.org) wrote:
-- Subject: Re: [freetds] $Id and include file

| Christos Zoulas wrote:
| 
| > For gcc you can:
| 
| We support vendor compilers too, so I don't think a gcc-specific 
| solution works for FreeTDS.

Well, it is simple enough to:

#ifdef __GNUC__
#define __RCSID(id) \
    static const char rcsid[] \
	__attribute__((__unused__,__section__(".ident"))) = id
#else
#define __RCSID(id)
    static const char *rcsid(const char *x) {	\
	return x ? id : rcsid(x);		\
    }
#endif

| > It would be nice to change the rcsid strings in freetds to $FreeTDS$,
| > instead of using $Id$.
| 
| I never really understood the benefit of this in the NetBSD tree.  Can 
| you elaborate on it some more?  Why is it a win?


If you want to maintain your own changes in a vendor branch without using
-kb. Let's say I import freetds-x.yy with vendor tag FREETDS and release
tag FREETDSX_YY. If I don't specify -kb, $Id$ gets expanded. This is ok
as long as I don't make any local modifications to the files. For each
file I modify I will get a conflict on the next import, because the $Id$
expanded versions will not match. If I use -kb, then $Id$ does not get
expanded, so I don't get the conflicts. But this is suboptimal, because
I wanted to be able to see the $Id$ strings so I can keep track of
my changes. If a third party ident key is used such as $FreeTDS$, none
of the local cvs servers know about it so they leave it alone and I
can use $Id$ locally as much as I want to.

| Do we all need to hack 
| up our CVS tools to support it, or do recent versions of CVS support it 
| out-of-the-box?

Well, the only cvs binary that needs to be hacked is the CVS server the
FreeTDS people are using. It is not really a hack; I think that there is
compile time define (LOCALID?). The NetBSD cvs sources have been hacked
to allow a line tag=FooTag in CVSROOT/config for this purpose (so that
you don't need to recompile CVS).

christos


More information about the FreeTDS mailing list