Ever since my internship at National Instruments, I’ve been using Perforce [1] as version control system. Thanks to their evaluation license [2], which is limited to two users, this has been completely free for me. I’m glad that I stuck with Perforce, because I am using it at work now too.
While at Rice, I had the Perforce server running on my office machine, a RHEL4 server. I don’t have a Linux box at home, just two Windows machines. To migrate the Perforce server from Linux to Windows [3], I had to run the p4migrate [4] script to find name collisions, since Linux is case-sensitive and Windows is case-insensitive. There were a handful of different files that would have mapped to the same file on Windows. Perforce customer service has been great, even for a user of the free version like me. Thanks again!
Running the Perforce server on a Linux machine made it really easy to run scripts as part of Perforce triggers. I just ssh into the same machine and run a script:
[cc]
# See ‘p4 help triggers’ for more information about triggers.
Triggers:
run-RiceMBS.to.web change-commit //depot/DP4MBS/RiceMBS.student/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-RiceMBS.sh %changelist% RiceMBS.to.web”
run-RiceMBS.to.202web change-commit //depot/DP4MBS/RiceMBS.student/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-RiceMBS-20.sh %changelist% RiceMBS.to.202web”
run-MSThesis.to.web1 change-commit //depot/Concutest/MSThesis/pdf/thesis.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% MSThesis.to.web”
run-MSThesis.to.web2 change-commit //depot/Concutest/MSThesis.defense/MSThesis-Ricken.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% MSThesis.to.web”
run-COMP600MS.to.web change-commit //depot/Concutest/MSThesis.defense/COMP600/COMP600-Ricken.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-COMP600PPPJ2009.to.web change-commit //depot/Concutest/PPPJ2009/presentation/COMP600/COMP600-Ricken-2009-08-24.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-COMP600Mint.to.web change-commit //depot/Mint/COMP600/presentation/COMP600-Ricken-Mint-2010-02-08.* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-RCSC20071004.to.web change-commit //depot/Concutest/MSThesis.defense/RCSC-20071004/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% rcsc-20071004.to.web”
run-Concutest-JUnit.to.web2 change-commit //depot/Concutest/concJUnit/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% Concutest-JUnit.to.web2”
run-Kooprey.to.web change-commit //depot/DP4RDP/Kooprey.zip “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% Kooprey.to.web”
run-TempCalc.to.TempAssign change-commit //depot/OOPBook/TempCalculator/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempCalc.to.TempAssign”
run-TempCalc.to.SIGCSE06 change-commit //depot/OOPBook/TempCalculator/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempCalc.to.SIGCSE06”
run-SIGCSE06.to.web change-commit //depot/SIGCSE06/TempCalculator/webpage/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE06.to.web”
run-TeachJava2004.to.web1 change-commit “//depot/DP4MBS/TeachJava Presentation/*.zip” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2004.to.web”
run-TeachJava2004.to.web2 change-commit “//depot/DP4MBS/TeachJava Presentation/*public.ppt” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2004.to.web”
run-TeachJava2005.to.web1 change-commit “//depot/DP4MBS/TeachJava 2005 Presentation/*” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2005.to.web”
run-TeachJava2005.to.web2 change-commit “//depot/DP4MBS/TeachJava 2005 Presentation/demos/*” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2005.to.web”
run-TempAssign.to.web1 change-commit //depot/OOPBook/TemperatureAssignment/*.html “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web2 change-commit //depot/OOPBook/TemperatureAssignment/handout/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web3 change-commit //depot/OOPBook/TemperatureAssignment/solutions/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web4 change-commit //depot/OOPBook/TemperatureAssignment/noApplets/TempCalc.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-VMInitPaper.to.web1 change-commit “//depot/Concutest/vmSyncPoints/Synchronization During Java VM Initialization and Termination.pdf” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% VMInitPaper.to.web”
run-VMInitPaper.to.web2 change-commit //depot/Concutest/vmSyncPoints/*.log “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% VMInitPaper.to.web”
run-laptjavac.to.web change-commit //depot/Concutest/laptjavac/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% laptjavac.to.web”
run-tcSubtypingPaper.to.web change-commit //depot/Concutest/tcSubtyping/tcSubtyping.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcSubtypingPaper.to.web”
run-tcrt.to.web1 change-commit //depot/Concutest/ClassLoader/built/tcrt.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web2 change-commit //depot/Concutest/ClassLoader/built/tclib.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web3 change-commit //depot/Concutest/ClassLoader/built/tcrt.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web4 change-commit //depot/Concutest/ClassLoader/built/tclib.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-update-tc-javadoc change-commit //depot/Concutest/ClassLoader/built/tc*.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /home/mgricken/bin/update-tc-javadoc”
run-subannot-to-xajavac change-commit //depot/Concutest/ClassLoader/built/subannot.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% subannot.to.xajavac”
run-xajavac.to.web change-commit //depot/Concutest/xajavac/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-xajavac.sh %changelist% xajavac.to.web”
run-subannot-to-xajavac-web change-commit //depot/Concutest/ClassLoader/built/subannot.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-xajavac.sh %changelist% subannot.to.xajavac.web”
run-javacredir.to.web change-commit //depot/Misc/JavaCRedirector/* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% javacredir.to.web”
run-xajavac.to.ClassLoader change-commit //depot/Concutest/xajavac/jars/xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% xajavac.to.ClassLoader”
run-ant-xajavac.to.ClassLoader change-commit //depot/Concutest/xajavac/jars/ant-xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.ClassLoader”
run-ant-xajavac.to.web change-commit //depot/Concutest/xajavac/jars/ant-xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.web”
run-ant-xajavac.to.web change-commit //depot/Concutest/xajavac/xajavac-apache-ant-1.7.0/src/main/org/apache/tools/ant/taskdefs/compilers/Xajavac.java “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.web”
run-617seminar.to.web change-commit //depot/Concutest/seminar/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% 617seminar.to.web”
run-617seminar.to.web2 change-commit //depot/Concutest/seminar/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% 617seminar.to.web2”
run-resume.to.superscalar change-commit //web/mgricken.cs/tmp/resume* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-resume.to.owlnet change-commit //web/mgricken.cs/tmp/resume* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-cv.to.superscalar change-commit //web/mgricken.cs/tmp/cv* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-cv.to.owlnet change-commit //web/mgricken.cs/tmp/cv* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-references.to.superscalar change-commit //web/mgricken.cs/tmp/references* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-references.to.owlnet change-commit //web/mgricken.cs/tmp/references* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-concjunitrt-ClassLoader-to-concjunit change-commit //depot/Concutest/ClassLoader/built/concjunitrt.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% concjunitrt-ClassLoader-to-concjunit”
run-SIGCSE2010.to.web change-commit //depot/Concutest/SIGCSE2010/pdf/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-SIGCSE2010.to.web2 change-commit //depot/Concutest/SIGCSE2010/assignment/sigcse2010-java-concurrency.zip “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-SIGCSE2010.to.web3 change-commit //depot/Concutest/SIGCSE2010/presentation/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom-2010-03-12.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-TWS.to.web change-commit //depot/ThesisWritingSeminar/talk/TWS-Ricken-Concutest-2010-02-25.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TWS.to.web”
run-MintPurdue.to.web change-commit //depot/Mint/COMP600/purdue/Purdue-Ricken-Mint-2010-03-15.* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.mint.purdue.to.web”
run-RiceResearchMixer2010.to.web change-commit //depot/Misc/Rice-grad-undergrad-research-mixer-2010/research-mixer-2010-ricken-poster-34-b.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% RiceResearchMixer2010.to.web”
[/cc]
I haven’t migrated these scripts yet. I do run Cygwin on my Windows machines, of course, and I could set up sshd on them, but I’m wondering if that is still the right thing to do.
Furthermore, I really wanted to install the Perforce server on vector, the Pentium 3 machine I got over 10 years ago. Unfortunately, one of the hard drives crapped out again, and it’s a PATA drive. All drives are PATA drives. I think it may be time to retire vector.
I’m considering buying a new i7 desktop, which will become scalar, and then making the current scalar, my Core 2 Duo desktop, the new vector. But perhaps I should install Linux on vector then? What distribution? Ubuntu?
Many questions, and of course only a little time on weekends to do it.