[p4] p4 server migration, Linux to Windows (long)
Norbert E. Kremer
p4 at nek.name
Fri Dec 15 10:41:12 PST 2006
Hello,
I'm assisting a client with a p4 server upgrade and migration project,
from an existing Linux server to a new Windows server.
The client has chosen to use only Windows servers in future, so I am
trying to identify and prevent problems that will occur during the migration.
[I'm aware that this migration is not supported by Perforce.
I've read the SAG and Tech Notes pretty thoroughly and consulted
with Perforce Support on the use of p4migrate. My questions go beyond this,
into the specific areas not supported by Perforce.]
Everything I describe here has been done on a Linux test box, using copies
of the
production files (on Linux). Windows is not yet in the picture.
I took a checkpoint and ran p4migrate against it to identify case collisions.
The map file output of p4migrate does not fully specify the conflict,
the left hand side and right hand side of each line are identical, indicating
the conflict in a generic way.
I therefore examined the checkpoint file to extract the conflicting
variants of the
filenames. [I actually did this with perl scripts, can provide details on
request.]
Conceptually, for each conflict in the map file, I did this:
1. grep -i 'conflict string' checkpoint # yields all variants of
conflicting filenames
2. grep 'conflict string' checkpoint # yields exact matches with
case-sensitive search
3. grep -i 'conflict string' checkpoint | grep -v 'conflict_string'
# all variants, then remove exact matches, leaving 'case-differing' matches
only
I then use the lists from grep #2 and grep #3 to search among depot files for
files, allowed on linux, that would collide on Windows.
So far, so good. Now come the questions:
Q1. What have others done to eliminate these conflicts ? I could attempt to
edit metadata (edit checkpoint file) and re-name depot files in a
consistent manner.
I'm less concerned with "how" right now, than with "what is best practice?"
Should I use "p4 obliterate" to remove one variant?
What if files are needed in future?
Should I rename one of the files and then edit metadata to match?
Should I perform surgery on the checkpoint file and depot files, or is there
a way to take appropriate action using client-side commands?
Q2. How can I validate that whatever I do was done correctly?
Is p4 verify //depot/... good enough?
p4 verify did not alert me to some missing files described in Q3.
Q3. In some cases, when I went looking in the depot for the files listed
in the map file
I could not find them. That is, there are case conflicts in metadata that
are not
represented in case conflicting filenames in the depot. I'm not sure how
this can
happen, but what should I do about it? Is it a real problem, or just some
harmless
historical accident?
Q4. Expanding on Q3, I think there might be other references in metadata to
files that don't (currently) exist in the depot. It's only because I ran
p4migrate
and followed up, that I happened to find several instances of this, but maybe
not all. Should I look for all such cases? Why? How?
Q5. I'm aware of this post from 2001
<http://maillist.perforce.com/pipermail/perforce-user/2001-August/006526.html>
That author does not mention p4migrate. Was available in 2001?
Does the use of p4migrate remove the need to perform
any of the steps mentioned in this earlier post?
Sorry for the length of this. I believe that a successful conversion from Linux
to Windows can be accomplished, but the details are obviously tricky.
Many thanks to anyone who can help.
Norbert Kremer - Database Architect - Melrose, MA
More information about the perforce-user
mailing list