How to upgrade CakePHP or any other package that is under subversion control with Rsync
Actually this is more simple than you might think.
First you checkout your current version. Then download and un-tar the new version and simply run the following command on your shell/terminal:
rsync -av --exclude '.svn' --exclude '._*' my/new/cakephp-cakephp-efb6e08/ my-old-cakephp/
This will exclude your Subversion .svn directories and it will also exclude the META-data files created by Mac OS X.
Good luck with upgrading!
Creating a patch to update one of your project its external vendor code.
I use this way to upgrade projects such as DokuWiki and CakePHP.
The advantage of this method is you will keep modifications you have made in the code of that vendor.
In my description I use FreeBSD and Mac OS X so you might need to adjust the commands for a different Operating System.
Create the patch file
First download the old and the new version code from your vendor site. In this example this is the website of CakePHP.
You need this that you can match the old version to the new version you want to upgrade to.
Create a temp directory to work in.
mkdir myUpgrade
cd myUpgrade
Download the two versions of CakePHP, your current and the version you desire to upgrade to
- http://github.com/cakephp/cakephp1x/tarball/1.3.0-RC3
- http://github.com/cakephp/cakephp1x/tarball/1.3.0-RC4
Unpack tarballs:
tar -xzvf cakephp-cakephp1x-348e5f0.tar.gz
tar -xzvf cakephp-cakephp1x-f63ab48.tar.gz
Now create the aptch width using the diff utility:
diff -Naur -x '.svn' -x '._*' cakephp-cakephp1x-348e5f0 cakephp-cakephp1x-f63ab48 > cakephp.diff
Applying the patch
To apply the patch file you created in the previous step, change into your real vendor directory and run the patch tool.
You may first want to do a test run to see if any conflicts may happen and what files are affected:
cd myUpgrade
patch -E -p1 < ../cakephp.diff --dry-run
The output should be something like this:
patching file cake/VERSION.txt
patching file cake/basics.php
patching file cake/config/config.php
*etc*
When you're happy, apply the patch:
patch -E -p1 < ../cakephp.diff
Once patch is applied you're done
Easy replace php short open tags with long php open tags
I wrote a quite simple script to fix short open tags to long open tags.
This script is compatible with CakePHP 1.1 and 1.2, on request
Have fun using it!
I suggest saving this file to /usr/local/bin/php_fix_short_open_tag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #!/bin/sh # Written by Marius van Witzenburg <info@mariusvw.com> path="." if [ ! -z "$1" ] && [ -d "$1" ] then path="$1" elif [ ! -z "$1" ] then echo "Invalid path defined, using default." fi echo "Searching for php short open tags..." echo "Starting path: $path" find $path -name '*.php' -type f -exec perl -i -wpe 's/<\?=/<\?php echo /g' '{}' \; find $path -name '*.php' -type f -exec perl -i -wpe 's/<\?/<\?php/g' '{}' \; find $path -name '*.php' -type f -exec perl -i -wpe 's/<\?phpphp/<\?php/g' '{}' \; find $path -name '*.ctp' -type f -exec perl -i -wpe 's/<\?=/<\?php echo /g' '{}' \; find $path -name '*.ctp' -type f -exec perl -i -wpe 's/<\?/<\?php/g' '{}' \; find $path -name '*.ctp' -type f -exec perl -i -wpe 's/<\?phpphp/<\?php/g' '{}' \; find $path -name '*.inc' -type f -exec perl -i -wpe 's/<\?=/<\?php echo /g' '{}' \; find $path -name '*.inc' -type f -exec perl -i -wpe 's/<\?/<\?php/g' '{}' \; find $path -name '*.inc' -type f -exec perl -i -wpe 's/<\?phpphp/<\?php/g' '{}' \; find $path -name '*.thtml' -type f -exec perl -i -wpe 's/<\?=/<\?php echo /g' '{}' \; find $path -name '*.thtml' -type f -exec perl -i -wpe 's/<\?/<\?php/g' '{}' \; find $path -name '*.thtml' -type f -exec perl -i -wpe 's/<\?phpphp/<\?php/g' '{}' \; echo 'Done!' |
Please leave the credits in if you want to modify it.
Donations are welcome haha



