=== Release 3.1 June 9, 2009
This release is a [very] long overdue follow-on to the most recently
published version, 3.0b6... which was released nearly three years ago.
It includes changes resulting from a customer conversion I did
in April 2008.
Changes:
- Depotmap entry values must now include a directory component
named /main/, which will be understood to identify the branching
level directory component. If need NOT be the deepest component in the
values. This allows more intricate depot and directory structure
rearrangements during a conversion.
- Additional CVSNT tweak; honor the cvsnt "x" (exclusive open)
attribute.
- RCS archives with multiple "1.1.1" tags (which are interpretted as
"import" RCS-style branch tags) are handled properly; only the first
such tag appearing in the symbols section of the archive file is
used; subsequent ones are ignored.
- The test configuration has been changed to omit the "/Test/" directory
level, which seemed to only be confusing people, and to align with the
fact that the converter is more-or-less hardwired presently to consider
the top-level component after the depot name to be the branching level.
- Now creates branch specs based on the branching it observes during
the conversion.
- Fixes a bug when using the $Depotmap and $USE_IMPORT_DEPOT,
where the integration records generated to portray "cvs import"
results were bad, e.g., you'd get
rmg $ p4 -p 1690 filelog //...
//import/SAVI/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h
... #1 change 2 branch on 2003/11/01 by mark@cvs2p4 (binary+Dx) 'Branching [imported from CVS b'
//prod/main/godspeed/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h
... #1 change 1 add on 2003/11/01 by mark@cvs2p4 (binary+Dx) 'Initial import of Sophos SAVI '
... ... branch into //prod/SAVI/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h#1
The above result is incorrect both because it lacks an integration
record showing where the //import/... revision came from, and
because it shows the //prod/main/... revision having been
integrated into the the (nonexistent!) branch "//prod/SAVI".
With the fix, the correct integration history is generated:
rmg $ p4 -p 1690 filelog //...
//import/SAVI/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h
... #1 change 2 branch on 2003/11/01 by mark@cvs2p4 (binary+Dx) 'Branching [imported from CVS b'
... ... branch from //prod/main/godspeed/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h#1
//prod/main/godspeed/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h
... #1 change 1 add on 2003/11/01 by mark@cvs2p4 (binary+Dx) 'Initial import of Sophos SAVI '
... ... branch into //import/SAVI/third_party/sophos/SDK/savi_dtk/sav_if/swiid.h#1
- Reintroduce the $IMPORTTAGSPOOF option.
- Handle the case of files initially added on a branch, then branched
to a sub-branch selected by $TRUNKLINE. Thanks again to David
Birkhead for being a valuable and appreciated Beta tester!
- RIP "shemp"; A vestige of an ancient Network Appliance naming
convention, when releases were Stooges... the test cases now
use "head" as the TRUNKLINE, which should be less confusing to
folks.
- Add a boolean $REVRECS switch to the config; when enabled, this
causes the converter to stash copies of the db.revs records for
each revision in a change in into the change description.
- Labels are now created without the "locked" option.
- A new configuration item, $CONVUSER, allows you to set the name
of the Perforce user who will be the owner of any label and
depot specs created during the conversion.
=== Release 3.0b6, September 5, 2006
- Fix a bug which was tickled by revisions initially added on a CVS
branch, where the branch is selected as TRUNKLINE (i.e., to become
the logical "main" in Perforce. Thanks to David Birkhead
(<[email protected]>) for reporting this bug. The symptom
was missing revisions in the converted result.
- Fix a problem that occured when both CVS_ROOT and and CVS_MODULE
were defined in the configuration file.
- The rcsfixup script now handles rcs files with "mergepoint:"
and "filename:" attributes in RCS files. (Some newer RCS/CVSes
create them).
- Add the $SPEC_DEPOT config variable, to specify that a "spec depot"
be created in the Perforce result.
=== Release 3.0b5
- Yet another labels-related bugfix.
- Add the $SPEC_DEPOT config option, which, if set, gives a name, with
with a spec depot will be created in the conversion result.
- bin/srcdiff now handles paths with '$'s in them correctly. Hey \r's, too!
=== Release 3.0b4, August 1, 2006
- Fixes a bug in converting labels; files originally imported
with "cvs import" and unchanged since the import would be omitted
from a converted label (in which they should be present).
=== Release 3.0b3, July 28, 2006
- Further fixes to depot mapping wrt labels.
- The correct set of depot specs are now created
- the imported cvs repository is now kept in a special depot of it's
own - "//cvs2p4/" - by default.
=== Release 3.0b2, July 26, 2006
- Fixes a bug in the $Depotmap{} feature.
=== Release 3.0b1, July 24, 2006
This release represents a major rework, driven by the needs of the
most ambitious conversion I have ever performed. The demands of this
conversion have required that the tools both perform better, and
support additional new features, especially with respect to
heuristically determining correct CVS release tags to Perforce
branches.
At least one external "alpha" test user has performed a conversion
using this code. I've decided to call this a "beta" release simply to
alert users that there may be some rough edges. However, given the
degree of testing it has undergone, I would encourage potential users
to use this release rather the final one of the 2.n series.
Here's a laundry list of the changes since 2.5.5. I have decided to
leave the list in time order (versus by significance of the change)
for now, at least. But one change in particular bears special mention:
** This version now requires a specially patched version of the
** "rlog" command (from RCS) in order to work. The required patch is
** supplied in the release; you will need to apply the patch, and
** compile a new version of rlog. See the section
** "src/rcs-5.7/src/rlog.c.patch" in the README file for further
** information.
Changes since 2.5.5:
- Tweak the test/runtest script to sleep for 2 seconds after issuing
the "p4 admin stop" command, to give the server time to shut down.
This was causing problems on some systems.
- Yowsa! Eating my own dogfood at a real conversion just now, of a
moderately large 5-year-old CVS repository, I feel your pain, oh ye
who have suffered... shall we say: "label bloat"?. Both the dblabels
(journal-format) file AND the final resultant db.label file get very
large very quickly. In part, this is because the "extra" label
records that get written for branches consume space, I'm
guessing. BUT the fact that we write a temp file (dblabels), and
then replay it into the Perforce server, makes the conversion take
up much more disk space.
As a simple hack to provide immediate relief, I have rejiggered
bin/dolabels such that the "dblables" data stream is written directly
into an instance of "p4 -jr -". This saves the time and disk space
involved writing the temp file, which is, normally, not reused
after the conversion. Waste not, want not!
- Achh! I have encountered a repository with "."s in the author:
names. These are supposed to be illegal (as I read rcsfile(5)).
But cvs2p4 now tolerates them.
- bin/dolabels has been tweaked so as to allow a user-supplied
"labelmap" file to give hints as to which labels really correspond
to which branches.
- Up till now, bin/genmetadata has used to use the "sort +1" form of
specifying sort keys. This seems to be obsolescent; the sort in
Fedora Core 3 seems to still support it, but the one in FC5 no
longer does. I have switched to the "-k 2" form for this, and it
seems to work fine on FC3 and FC5. [Seems OK on FreeBSD 4, too].
- bin/genmetadata now leaves two files, tags.txt and brtags.txt, in
the conversion directory. These are, simply, sorted lists of the
"plain" tags and branch tags encountered during the scan of the CVS
repository. "brtags.txt" contains one line per branch tag
encountered in the conversion. "tags.txt" is one line per tag,
being the tag name, whitespace, and then a '\001'-separated list
of branches in which the revision is present.
These can be useful when you are faced with the task of
building a mapping function between CVS tags and CVS branches, for
use with the branch_for_tag() function in bin/dolabels.
- bin/genmetadata can now infer tag->branch mappings heuristically in
many cases; the mappings thus determined are recorded in the
<convdir>/tags.txt file, which bin/dolabels now knows how to load
and use. The overall effect is that now, by default, Perforce labels
will be created for those CVS release tags for which a branch
mapping was discovered heuristically. (And, by default, ONLY these!)
Please see the new "RCS/CVS Tag to Perforce Label Conversion"
section in the README file for more details.
- $P4ROOT now defaults to being placed _inside_ the "conversion dir",
making it easier to have multiple conversions around without
collisions.
- I believe that cvs2p4 now runs in a fixed memory footprint; all
large data sets are now kept in DBM databases. If you see evidence
otherwise please let me know!
- In order to have a way of gauging bin/dolabels progress, it now
prints out an input file line count for every 10,000 lines of the
"labels" file as it is processed.
- In previous editions, with $COPYIMPORT=1, the copy of the CVS
repository tree left under $P4ROOT had directory write permission
turned off on directories in the copy. This prevented running the
automated tests repeatedly, since the attempt to remove the existing
$P4ROOT at the start of the second and subsequent runs would
fail. Write permission is now left on in the newly copied
directories.
- Change from the not-so apropos Artistic license to the lithe MIT
license.
- Improved handling of vendor branch files, and the intricacies of
whether vendor-dropped files have been modified locally or not.
(See the notes labelled "VENDOR-DROP BRANCHES" and in the README
file).
- Added $Depotmap{} feature for mapping top-level subdirs of
CVS_MODULE into different depots.
- OK, this is what I call NEWS!: Yesterday I noticed genmetadata - the
one I sweated to make fast with huge binaries with a few large
revisions go fast - going real SLOW on a file with thousands of
small text revisions. I gave up, patched rlog to have the one
missing shred of info I needed, and reimplemented the whole thing to
just use rlog. Call this bullet bitten!
I've verified that this version produces IDENTICAL results to
to older perl-based parsing... in about half the aggregate time.
- There is now a facility allowing you to map top-level directories in
the CVS content being converted into multiple different Perforce
depots. Basically, just add a line in the following format to the
config file for each such mapping you want to establish:
$Depotmap{"<topdir>"} = "<depot>";
All files with no such mapping in effect will be put into the
default depot path defined by $DEPOT in the config file.
- No question, this gets to be 3.0! :-). It now does special spoofing
treatment for cvs import-ed files, to match the cvs behavior when
multiple vendor drops have been taken, with no local modifications
yet applied. Label generation has been fixed for these so that
labels applied to, e.g., 1.1.1.2 revisions before any 1.2 is checked in
will appear to be in *both* the "import" branch and the "main" branch,
just the way they behave in CVS. This required very significant mucking
in all stages of the pipeline! Much testing will ensue...
- bin/srcdiff copes with relative paths now, like a reasonable person
might assume it would.
- The "vendor branch" names found in the RCS archives of files created
by "cvs import" (i.e., the names of thags on "1.1.1"), are used as
the vendor branch name, rather than "import". (The old behavior, of
flattening them out into a single "import" branch, may be added back
as an option in the future if it's missed at all)
- There is now a special list you can use to declare files which
should explicitly be treated as binaries. Please see the
"BIN_PATHNAME" section at the end of the config file.
- The test/config file has been split-cloned into
test/config.test
config.tmpl
The former has the required defaults for running the test,
while the latter can provide a good place for users to start.
- Added the $USE_IMPORT_DEPOT config option; if enabled (by assigning
a depot name to it), revisions from the 1.1.1 branch (aka the cvs
import "vendor" branch) will be placed into the depot named by
$USE_IMPORT_DEPOT. If used, the name must include the leading "//",
e.g.,
$USE_IMPORT_DEPOT = "//import";
=== Release 2.5.5, September 29, 2005
- The conversion now detects files where the default RCS branch is set
to "1.1.1", and treats such files as if the "import" branch (1.1.1)
were on the branch designated as "main" (usually, the trunk).
This can be desirable for files which have been repeatedly "cvs
imported" with multiple "vendor-drops", but no revisions have been
checked in on the trunk after the first revision, AND you want the
latests of the vendor drops (i.e., the head of the 1.1.1 branch)
for the file.
It's possible somebody might want the old behavior, but for now, I
am going to leave the new behavior hardwired, as it may be more
generally correct.
- A bug affecting labels on files whose pathnames contain Perforce
special characters has been fixed.
=== Release 2.5.4, May 28, 2005
- Add bin/srcdiff, a tool for more easily comparing checked-out
versions of a src from CVS and (posto-converto) Perforce. Helpful
for easing worry in the minds of doubters in cvs2p4's fidelity.
You can doubt *my* fidelity, but don't go doubting that of my tools!
(no apostrophe).
=== Release 2.5.3, April 26, 2005
- bugfix: 2.5 added support for '#' and '%' in filenames (to match
newer Perforce servers, which now allow these). DUe to a bug,
however, these characters were being effectively transposed in the
result of the conversion.
=== Release 2.5.2, April 25, 2005
- bugfix for the new $PureRCS feature... always use the RCS
branch number for #1 revs, not the internal ...0.n number!
=== Release 2.5.1, April 25, 2005
- This adds an (experimental) switch ($PureRCS in the config file) intended
to aid in conversions from "pure RCS" repositories. By "Pure RCS", we
mean that the repository was not have been created using CVS, and so
lacks CVS branch tags.
With $PureRCS = 1, the conversion will be done using, for each file,
the numeric RCS branch names found in RCS.
"Change aggregation", using the standard hueristic is still performed,
and labels are imported as usual.
The intent is that Perforce style branching can be established
as a post-import operating, by do integrations based on labels
known to correspond to a logical branch.
=== Release 2.5, January 3, 2005
- The converter now handles the newly admitted (in Perforce 2004.2)
special characters '#', '*', '%', and '@' (in client filesystem
pathnames) properly.
=== Release 2.4, July 23, 2004
- fix dochanges so that <test_conv_dir>/depotmap is run correctly.
- Improved rcstok function in genmetadata to better cope with binary files.
Previous version was potentially taking a *very* long time...
[Thanks to Robert Cowham, [email protected] for this fix!]
- Added two new template functions, "branch_for_tag()" and
"rev_on_branch()". These allow dolabels to act much more intelligently
about applying labels to the correct branch, only, and may result in
a very significant savings in terms both of running time and disk space.
For now, see the comments bin bin/dolabels (seach for "branch_for_tag")
for an explanation of how to use this. When these function are NOT
defined (as in the default as-shipped state), dolabels behavior will
be the same as in previous releases.
[Thanks to Kate Ebeneter and the iPod people for helpng to test this!]
=== Release 2.3.8, April 19, 2004
- Correctly handle symbol names that begin with a {num}.
=== Release 2.3.7
- Add the "HOW TO PACKAGE MODIFICATIONS" section to the README file.
=== Release 2.3.6, October 7, 2003
- Added "use bytes;" to all of the bin/* scripts, so that newer
perls, which apparently do Unicode by default, won't. (I don't know
whether any RCS's ever do Unicode, anyway.
- Also, made a tweak to the test/runtest script, purported to be
necessary for the tests to work correctly on some Solaris systems:
217c217
< my $p4d_vers = `$P4D -V | grep ^Rev`;
---
> my $p4d_vers = `$P4D -V | grep '^Rev'`;
rmg $
I don't know why this might be needed; some shell treating '^' as a
metacharacter, I guess. (I seem to recall csh doing something with
it, but isn't perl supposed to alway exec the "system's command
shell", which, I thought was always /bin/sh on Unixes, but then,
hey, it's Solaris, right? Anyway, it's benign.
=== Release 2.3.5, August 26, 2003
- Fixes a spurious test failure when using the "test suite",
presumably caused by changes in the diff algorithm (hence in p4
describe output) in Perforce 2002.2. The test will report success
correctly for 2003.1 and earlier supported releases (see the README
file for the current list of supported releases.
- For added safety, the $DEPOT tree of imported RCS archives is made
read-only after being copied, so as to prevent changes to any of the
files containing the imported revisions.
=== Release 2.3.4, November 21, 2002
This change corrects a problem introduced when cvs2p4 was given the
ability to handle RCS branch tags. Essentially, when files (like the
"datefile" test file) have RCS tags on the 1.1.1 branch, the scripts,
which fake an "import" branch tag for this same revision, can get
confused. This change forces the 1.1.1 branch to be known only as
"import", always.
=== Release 2.3.3, October 28, 2002
Changes to start coping with MKS Source Integrity conversions.
This change allows genmetadata to simply ignore (and hence, to
continue working!) the "ext" and "format" keywords that MKS Source
Integrity apparently adds to the rcs repertiore. This could possibly
be recoded to deal with arbitrary new keywords, but I don't want to go
there now.
Note that there *may* be other gotchas when attempting to use cvs2p4
to convert MKS SI repositories, which may be addressed by future
changes to cvs2p4:
1. It appears that MKS may compress (gzip) binary ,v files, but *not*
rename them to reflect this. Very odd.
2. It appears that MKS may allow a larger character set (than pure RCS)
in legal symbolic names. I can probably fix cvs2p4 to deal with these
pretty easily, but we should also consider whether any of the MKS names
might be illegal in Perforce (and thus needs some sort of
translation).
Intrepid users setting out to use this tool to convert MKS into
Perforce are encouraged to send problem reports to
"[email protected]".
=== Release 2.3.2, September 3, 2002
Add $DEPOT config item, allowing RCS archives to appear as
$P4ROOT/$DEPOT/$CVS_MODULE; I.e., with $DEPOT set to "depot/IMPORT",
the RCS archive files will end up under
"depot/IMPORT/<modulename>/<filepath>"; With $DEPOT set to "depot",
they will be, simply, "depot/<modulename>/<filepath>". This makes it
easier to make later merges of subsequently imported changes easier.
Changed the database open code to allow setting the size of hash
buckets (allows large conversions without running out of space for
hash table pages).
Handle label names with '#' or '@' by substituting "_hash_" and/or
"_atsym_" into the converted label name.
(Thanks to Marc Tooley of Perforce Support for supplying these
imporvements).
=== Release 2.3.1, July 30, 2002
Now always run p4d with an explicit p4d -r, in case the user's
environment has a P4ROOT set.
genmetadata now reports both the CVS file archive path and the
converted file path as it processes each file. This makes it easier to
tell what RCS archive file caused a problem if the file cannot be
parsed properly.
The scripts now use the more modern tie()/untie() database interface,
instead of the older dbmopen()/dbmclose() interface. The scripts
assume the presence of the DB_File (Berkeley DB 1.x) module. This
means that you are no longer left to the whim of the dbm support
compiled into your perl. Certain dbm implementations, notable that in
recent Solaris, caused problems. If you don't have DB_File support for
your perl, you'll need to find the tie() statements in the bin/*
scripts, and modify them to use some dbm package that you do have on
your system.
$P4_DEPOT can now be set to something that doesn't start with
"//depot/", and things will work properly (a new depot specification
will be created in the converted database).
Added README notes about conversions that merge into an existing
depot.
=== Release 2.2, July 18, 2002
You can now choose the Perforce filetype you'd like to have ALL of
your text files imported with. As long as it's "text" or "ktext" :-).
See the "$TEXTTYPE" configuration item.
For "developers": Added a new test/getgood script to grab the test
comparision files which have changed with a "runtest -gengood". Less
tedium.
Made the test/phone.gif,v a binary (-kb) RCS file, so we really test
that.
Fixed a bug in dochanges, wherupin the command to create a symlink to
the RCS archives was being created in copy mode, provided the copy did
not fail. Reported by John Wong (jw at unicom.com.au).
Added a new config item "DEADSTATE", for saying what RCS state value
means "deleted" in Perforce. It defaults correctly for CVS, so if
you're converting real CVS, you can just leave this as-it.
=== Release 2.1, July 10, 2002
Change to handle RCS branch tags (so this tools can work with
RCS (vs CVS) repositories, too!) RCS branch tags are those
with an even number of "."s.
=== Release 2.0, May 6, 2002
No functional change since 2.0b6; This becomes the first public
release of cvs2p4 2.
=== Release 2.0b6, May 1, 2002
- handle Attic files correctly - this required a change from the old
version (and required touching genmetadata), since we now use the
old RCS archive tree in place (or a copy thereof).
- dolabels now closes the labels journal file explicitly. Previously,
the subsequent "p4d -jr" could see premature eof to due buffered
data, and the last bunch of labels in the dblbls file would not
be converted.
- fix a bug that broke conversion of files that had been deleted and
then re-added in CVS; upon re-adding the file, it would be given
revision #1 agian, instead of the next unused revision number.
- added a couple of test cases for these.
Many thanks to Fan Zhang of Numeritech for helping to wring out
these problems!
=== Release 2.0b5, April 29, 2002
- handle binaries correctly. Since we're using imported RCS ,v
files in the archive, we need to make binaries "binary +D"
(or "xbinary +D"). Add a .gif to the tests to test this.
=== Release 2.0b4, April 29, 2002
- dochanges now writes a record for the upgrade counter counter.
it also checks the p4d version to verify we have 2002.1 or
better, and does a p4d -xu if later than 2002.1.
=== Release 2.0b3, April 17, 2002
- dochanges now writes a record for the change counter! (Previously,
it was left uninitialized, so the converted server would try to
allocate change #1 again.)
=== Release 2.0b2, April 16, 2002
- Add $CHECKBIN config option to control whether RCS revisions are
checked out to apply the perl -B operator as part of determining
what revisions should be treated as binary in Perforce.
- Make the list of file extentions to be treated as binary a config
file item ($EXT).
- Add $COPYIMPORT (and command line -c) to dochanges, to request that
the CVS tree be copied into (rather than linked to from)
$P4ROOT/depot/IMPORT.
=== Release 2.0b1, April 15, 2002
- This release contains a major overhaul for performance. The
"dochanges" and "dolabels" stages now directly generate
checkpoint-format Perforce metadata, and then replay it with "p4d
-jr" in order to create the Perforce metadata; also, the generated
metadata causes the RCS archives in the CVS repository being
converted to be used directly. Thus, the time-consuming "replay"
of Perforce operations is avoided.
"genmetadata" and "genchanges" remain unaltered in this release.
- The modification times on individual file revisions are now
correctly preserved in the converted Perforce database (in previous
versions, the changelist times correctly reflected the times of the
original CVS submits, but individual file revisions times were set
to the time of conversion).
=== Release 1.3.3, February 9, 2002
- Yet another fix for label handling, when files which had been
moved to the Attic/ in CVS have been readded.
=== Release 1.3.2, February 5, 2002
- Reduce the memory footprint of bin/genmetadata. Previously, it was
holding and sorting a complete copy of the metadata file "in-core"
(as well as a copy of all of the RCS revision tags data!). This adds
up quick, and some users saw genmetadata gobbling memory voraciously
(and in some cases being running out, causing thrashing and/or process
termination by the OS).
genmetadata now keeps the metadata in a temp file, (sorting it in
primary-key-sized chunks), and the revision tag information in a
db-backed hash.
- Fix the label handling so that _all_ perforce revisions based on the
labeled cvs revision are included in the generated
labels. Previously, one of the N "correct" Perforce revisions were
being tagged (effectively, at random). This stems from the fact that
lazy copying and branching are explicit in Perforce, but implicit in
CVS. I.e., the "#1" revision in a new Perforce branch _appears_ to
be a separate entity (identical to the revision from which it was
branched. This means that to use the converted labels, it will be up
to _you_ to remember what labels go with what branches: but that's
the way it is in CVS, too.
- A minor change in revmap to have a meaningful usage message, and
properly handle the new rrevmap format.
- dochanges correctly deletes revmap database files for either
*.db or *.pag/*.dat style databases.
=== Release 1.3.1, January 4, 2002
- Make dolabels ignore errors from "- label in sync.", which happens when
the revision of a file in the label is a delete.
- Add the $IMPORTTAGSPOOF option (see test/config comments for details)
=== Release 1.3, December 26, 2001
- Add
Change [0-9]+ renamed change [0-9]+ and submitted.\$
to
$check_submits in bin/dochanges
and recognize the /^Change \d+ renamed change (\d+) and submitted\.$/
form of the success message.
Allows messages about change renumbering, so cvs2p4 can be used to
import to an existing (nonvirginal!) server. Note that I *don't*
claim this works completely now, but from my experience at Orca a
year ago, this was the only bugaboo that bit. Note also that it's
still the user's obligation to insure that there are no pathname
overlaps with files that already exist. *That* is guaranteed not to
work!
- First whack at support for creating Perforce labels from CVS tags.
CVS *branch* tags are treated as branching information, (same as
ever), but plain old tagged revisions get built into Perforce labels.
The Perforce labels are created with the default (all-depot) view
mapping.
The mods involved changes to genmetadata (to remember the label
info), dochanges (to make the RCS-to-Perforce revisions map (the
existing revmap went the other way, so now we have both), and a new
stage "dolabels" to create and populate the labels.
Also sundry files for test cases & machinery.
This implementation has not yet been tested a great deal with real
road mileage, but, alas, this time I'm adding the feature for other,
rather than as part of my own big conversion effort. So, we'll see.
- revmap output for the Perforce -> RCS direction is now cleaner.
- Finally, in putting in the support for labels, I was forced to look
a lot closer at a lot more of the code than I have in some time.
Needless to say, there's much I would do differently a second time
around (and considering the tool to be more than a one-use thing to
begin with!). Also, I'm now armed with enough knowledge, I think, to
do a fast "direct to metadata" conversion...
=== Release 1.2.17, November 5, 2001
- Add an assertion for duplicate filenames d/f,v & d/Attic/f,v
(This is not valid in a CVS repository!)
- Fix a bug where one-letter identifiers would cause an internal error in
genmetadata. (Bug reported by Rich Ireland <[email protected]>)
=== Release 1.2.16, August 27, 2001
- Reflect my recent job (and email address) change
- Changes some of the default values (and names) of "config" file
variables, to better match the environment I'm most like to work
in now.
- Change all "p4" invokations to explicitly specify P4PORT, P4CLIENT and P4USER
on the command line, so as not to be confused by and P4CONFIG files that
might otherwise come into play.
=== Release 1.2.15, December 12, 2000.
- Now rejects filenames with illegal Perforce characters.
(Fix supplied by Doug Quist).
=== Release 1.2.14, November 20, 2000.
- Now performs metadata sort using a sort routine coded directly in perl,
rather than by using the host system's "sort" command. (Differences
in "sort" behavior from one host to another had been observed to
cause irregularities).
=== Release 1.2.13, September 12, 2000.
- Fixes a bug (resulting in bad date translations) introduced in the
bugfix in 1.2.12. (Fix supplied by Thomas Quinot).
=== Release 1.2.12, September 11, 2000.
- Includes a bugfix, supplied by Thomas Quinot <[email protected]>,
to correctly handle the fact that RCS timestamps in repository files
are in UTC; this was causing the timestamps to be off (by the
difference between UTC and the Perforce server's local time) in
converted depots, and, in some cases, cause outright
failures. (I.e., when the UTC time had never existed in local time,
due to daylight savings transitions.)
=== Release 1.2.11, August 30, 2000.
- Skip (and note) ,v files with nonprintable characters in the fileame.
=== Release 1.2.10, August 24, 2000.
- Tolerate "empty" RCS ,v files that can (reportedly) be created due to
certain failing cvs operations. (These files will be ignored;
previously, they would cause a fatal error in genmetadata).
=== Release 1.2.9, May 16, 2000.
- Allow "." in "id" symbols in RCS files. (Author names like "ralph.spoilsport")
=== Release 1.2.8, May 11, 2000.
- Handles cr/lf line endings in RCS archives.
=== Release 1.2.7, April 5, 2000.
- A fix for a bug that caused genmetadata to croak when it
encountered an RCS file with the default branch set, a la
"rcs -b1 file,v"
=== Release 1.2.6, January 18, 2000.
- The conversion scripts should now be able to cope with shell metacharacters
(notable, ' ' and '$') in file names. This has not been thouroughly tested,
so if you do have such files, please pay particualr scrutiny to them.
=== Release 1.2.5 January 3, 2000.
- This adds adjustments for making cvs2p4 cope correctly with post-1999
revisions in the RCS archives being converted, as supplied by David Simon
of Goldman Sachs. (Thanks).
=== Release 1.2.4
- In some circumstances, "p4 files" can return a different error message
for "p4 files foo", when "foo" doesn't already exist in the depot.
This change allows "dochanges" to work properly when this happens.
(The precise circumstances in which the alternate message is returned
are not yet well characterized).
=== Release 1.2.3
- Only attempt checkpointing if $CHECKPOINT_INTERVAL > 0. (So I can really
turn it off in the config file!)
- Fix bug reported by Todd LaWall <[email protected]>, wherein:
a branched file, that has not been changed since the branch was
made, is dropped from the branch, if $BRANCH_FLASH is not defined
in the cvs2p4 config file. (bug in genmetadata).
=== Release 1.2.2
- Fix spurious error reports from the final diff (p4_describe vs
p4_describe.good) when running the test cases with r98.2. (This was
caused by an apparent change, in which the diffs produced by the
r97.3 "p4 describe" include Id keyword expansions, but the r98.2
"p4 describe" does not).
=== Release 1.2.1
- Fix bug reported by Ed Rapoport, wherein:
"There was a problem, however, in the case of cvs files where
there were at least two branches with the second branch branching
off the first, but not yet having a delta created in the cvs file
(an "incipient" branch) The incipient branch name (br_orca_autocal
in the example) got applied to its parent branch (br_orca_intermed
in the example) and the parent branch name got applied to the
child incipient branch in perforce."
=== Release 1.2
- Implement "dochanges -s <n>" to make the converter restartable. Yeah.
- Added a couple of test cases for branch tags sharing tip & trunk revs.
- Reimplement revmap to do per-revision stuff, to allow for merging.
- Fix ALLTHEWAYBACK to look for the earliest non-trunk revision actually
selected by any branch tag - not just the earliest one where a real
branch was found.
* This was the version used during our actual main CVS -> Perforce
conversion on 3/20-3/21 1998.
=== Release 1.1.1, March 10, 1998
- Damn. The fix for multi-binary detection was not complete. It is now.
Really. At least it had better be, I'm about to convert 25K p4 changes
worth of our real source with this sucker...
=== Release 1.1, March 10, 1998
- Change conversion client name from "dochanges" to "cvs2p4"
- The CVS trunk is now created as "main" in the Perforce depot.
- Converts "$Header: //guest/perforce_software/archived/utils/cvs2p4/NEWS#1 $" to "$Id: //guest/perforce_software/archived/utils/cvs2p4/NEWS#1 $" for text files.
- Added support for "vendor" branches (RCS branch 1.1.1); becomes branch
"import" in Perforce.
- Added SYM_SPECIAL support for selectively importing top level subdirs
of a CVS module via symlinks.
- Optimizations for genchanges, which help *lots( with huge checkins
of vendor-supplied branches (I.e., where there are many changes with
large numbers of files).
- Fixed a bug in genchanges such that, for purposes of change grouping,
all revisions were considered to have happened in the midnight hour
(plus the actual number of minutes after the hour at which they actually
occurred). Taken with the other grouping hueristics, this was pretty
benign, I think, but it's fixed now.
- Fixed a bug wherein checkppoints were always trying to checkpoint the
server at port 1666 on the host running the server.
- Also, *only* do checkpoints at NetApp, 'cause they depend p4d_admin!
- Take a checkpoint at the very end
- Now detects binary files in additional ways:
perl -B operator
known list of binary file extensions (hardcoded into dochanges for now)
(This helps where binaries were checked in to CVS but nobody told CVS
by selecting a binary keyword expansion mode).
- The diffs in the test stuff in 1.0.1 and 1.0.2 was inadvertantly disabled,
so you could get false PASSes. Oops. Fixed.
=== Release 1.0.2, February 9, 1998
- Incorporate README typos fixes from James Strickland
- tests/* executables find Perl via $PATH
- Remove dup entry for test/changes.good from MANIFEST
- Remove "." from $check_submits in bin/dochanges (the "." was there for
debugging, and, in effect, disables all output error checks on submits!
=== Release 1.0.1, February 3, 1998
- Incorporate James Strickland's README edits
- make bin/* kxtext
- bin/* script now find perl via PATH (it must be perl5 or they
will fail).
- MANIFEST doesn't try to check checksums on FreeBSD systems.
- Added $CO to the test/config template file for specifying where to
find the RCS "co" command
- CHECKPOINT_INTERVAL defaults to "10" for running the test config,
but "0" otherwise in the test/config template.
=== Release 1.0, January 30, 1998
- Contains several bug fixes you really want if you intend to use this
for real.
- Verified the results of a complete conversion of the NetApp Data ONTAP
source base, by converting then doing file-by file comparisons of
the results of checking trees out from both CVS and Perforce, across
several branches.
- Added minimal user documentation in the README file.
- Added a minimal automated test script.
- Placed under the Artistic license.
=== Release 0.5, December 1997
This was an informal release to Perforce, so James could see what it
was like.
--------------------------------------
$Id: //guest/perforce_software/archived/utils/cvs2p4/NEWS#1 $
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 8160 | michael |
Archive obsolete CVS to Perforce converter. See the Perforce KB and website for an updated CVS to Perforce converter. |
||
| //guest/perforce_software/utils/cvs2p4/NEWS | |||||
| #40 | 7274 | Richard Geiger | Integrate dev changes to become 3.1 | ||
| #39 | 5649 | Richard Geiger | Integrate 3.0b5, b6 changes... | ||
| #38 | 5619 | Richard Geiger | Changes for 3.0b4 | ||
| #37 | 5613 | Richard Geiger | prep for 3.0b2 | ||
| #36 | 5606 | Richard Geiger | Final 3.0b1 tweaks prior to publishing. | ||
| #35 | 5601 | Richard Geiger | Integrate 3.0 changes, preparing to publish. | ||
| #34 | 5145 | Richard Geiger | Publish 2.5.5 | ||
| #33 | 4985 | Richard Geiger |
Long live 2.5.4. (Adds bni/srcdiff) |
||
| #32 | 4923 | Richard Geiger | Integrate 2.5.1-3 changes. | ||
| #31 | 4735 | Richard Geiger |
This is release 2.5, which handles those four extra special characters Perforce 2004.2 kind-of allows :-) |
||
| #30 | 4354 | Richard Geiger | Integrate 2.4 changes. | ||
| #29 | 4274 | Richard Geiger | Publish 2.3.8 | ||
| #28 | 3711 | Richard Geiger | release 2.3.7 | ||
| #27 | 3600 | Richard Geiger | publish 2.3.5. | ||
| #26 | 2449 | rmg | Public 2.3.4 | ||
| #25 | 2285 | rmg | Publish 2.3.3 | ||
| #24 | 2063 | rmg | Publish 2.3.2 | ||
| #23 | 1989 | Richard Geiger | Public 2.3.1 | ||
| #22 | 1971 | rmg | Publish 2.2 | ||
| #21 | 1946 | rmg | Publish 2.1 | ||
| #20 | 1786 | rmg | Publish 2.0 | ||
| #19 | 1439 | rmg | Publish 1.3.3 | ||
| #18 | 1410 | rmg | Publish 1.3.2 | ||
| #17 | 1205 | Richard Geiger | Publish 1.3.1 | ||
| #16 | 1187 | Richard Geiger |
1.3. Mainly, support for labels! |
||
| #15 | 1033 | Richard Geiger | publish 1.2.17 | ||
| #14 | 796 | Richard Geiger | Release 1.2.16 update | ||
| #13 | 476 | Richard Geiger | publish cvs2p4 1.2.15 | ||
| #12 | 462 | Richard Geiger | publish 1.2.14 to the public site. | ||
| #11 | 436 | Richard Geiger | Publish 1.2.13 | ||
| #10 | 418 | Richard Geiger | Publish 1.2.12 | ||
| #9 | 400 | Richard Geiger | Publish 1.2.11 | ||
| #8 | 395 | Richard Geiger | 1.2.10 | ||
| #7 | 344 | Richard Geiger | 1.2.9 | ||
| #6 | 333 | Richard Geiger |
Publish 1.2.8 (Not usre why test/file,v was included in this integration; am guessing it was a missed integrations left over from 1.2.7, perhaps) |
||
| #5 | 321 | Richard Geiger | Ah, also update these for 1.2.7 | ||
| #4 | 256 | james | push cvs2p4 1.2.6 to public area | ||
| #3 | 242 | james |
Pull cvs2p4 into //public so latest version (1.2.5) gets synced onto the Perforce FTP area. Note the cvs2p4-latest.tar symlink - I'll update loadsupp to point to that. |
||
| #2 | 230 | Laura Wingerd |
Pull cvs2p4 into //public so latest version (1.2.4) gets synced onto the Perforce FTP area. |
||
| #1 | 152 | Laura Wingerd | cvs2p4 goes public. | ||
| //guest/richard_geiger/utils/cvs2p4/NEWS | |||||
| #1 | 130 | Richard Geiger |
CVS-to-Perforce converter. This is release 1.2.2 (first submit to the Perforce Public Depot) |
||