Project

General

Profile

Actions

Backport #4235

closed

svn keywords in code prevent correct building of ruby using git mirror

Added by stepheneb (Stephen Bannasch) over 13 years ago. Updated over 7 years ago.


Description

=begin
Right now there are 355 locations in C and Ruby source files where Subversion keywords are used.

$ ack -l '$(Date|Revision|Author|HeadURL|Id)$' --nohtml | wc -l
355

Almost all of these uses are in comments in source files.

However there are a number of places that $Id$ and $Revision$ are used in runnable code.

This means that correct Ruby builds can't be made using the official git mirror: https://github.com/ruby/ruby

The usage breaks down as follows:

$ ack -l '$(Date)$' --nohtml | wc -l
1
$ ack -l '$(Revision)$' --nohtml | wc -l
58
$ ack -l '$(Author)$' --nohtml | wc -l
113
$ ack -l '$(HeadURL)$' --nohtml | wc -l
0
$ ack -l '$(Id)$' --nohtml | wc -l
212

The most useful first step would be to remove the use of subversion keywords from the runnable code.

Here are the locations I found usage of svn keywords in runnable code in trunk. This is done in teh trunk branch from a git clone of the official mirror: https://github.com/ruby/ruby

I used the following regexes with ack to at least exclude usage in ruby commenetd code that starts with '#':

ack '^[^#].$Id$' --nohtml --heading --break -C 6
ack '^[^#].
$Revision$' --nohtml --heading --break -C 6

http.rb, pop.rb, and smtp.rb:

class HTTP < Protocol

 # :stopdoc:
 Revision = %q$Revision$.split[1]
 HTTPVersion = '1.1'

rexml.rb:

REVISION = %w$Revision$[1] || ''

ruby-mode-el and ruby-style.el:

(defconst ruby-mode-revision "$Revision$"
"Ruby mode revision string.")

in lib/irb: cmd/fork.rb, cmd/nop.rb, completion.rb, ext/history.rb, ext/loader.rb,
ext/multi-irb.rb, ext/save-history.rb, input-method.rb, locale.rb, output-method.rb,
ruby-lex.rb, slex.rb, xmp.rb and irb.rb itself:

@RCS_ID='-$Id$-'

lib/logger.rb

_, name, rev = %w$Id$

lib/optparse.rb

RCSID = %w$Id$[1..-1].each {|s| s.freeze}.freeze

lib/sync.rb

RCS_ID='-$Id$-'

lib/net/telnet.rb

REVISION = '$Id$'

lib/cgi/core.rb

REVISION = '$Id$' #:nodoc:

ext/strscan/strscan.c

tmp = rb_str_new2("$Id$");

There are some places where $Id$ is used in code buit the code itself is commented out:

ext/sdbm/_sdbm.c

#ifndef lint
/char sdbm_rcsid[] = "$Id$";/
#endif

and:

#ifndef lint
/char pair_rcsid[] = "$Id$";/
#endif


Here's a summary of some of the ways svn keywords are used now in comments in code:

Ruby source:

fork.rb -

$Release Version: 0.9.6 $

$Revision$

by Keiju ISHITSUKA()

or a C header:

/**********************************************************************

 rubysig.h -

 $Author$
 $Date$
 created at: Wed Aug 16 01:15:38 JST 1995

 Copyright (C) 1993-2008 Yukihiro Matsumoto

**********************************************************************/

Or an emacs script (misc/inf-ruby.el):

;;; --Emacs-Lisp--
;;;
;;; $Id$
;;; $Author$

Or block comments using =begin (lib/xmlrpc/datetime.rb):

=begin
= History
$Id$
=end
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0