Tag Archives: Eclipse

How to add “compare to local history” feature to any *nix system

NOTE: This refers to a Mac install. If you’re on a regular *nix box, this should work even easier w/o as many workarounds…

NOTE2: I need to edit this post. I was writing it while working on the issue and got too busy to really polish it up. When I get some free time, I’ll fix it.

There are some wonderful things about Eclipse. Plugins for just about anything. Some cool svn integration. And one item was the killer feature for me. Right click a file and you can compare to local history. It will list for you every version of the file, which gets created when you hit save.

On the downside with Eclipse, they have no word wrap after years of being asked for it. That’s a killer feature too. And perhaps worse, it’s quite heavy.

I wanted to find the local history in another tool and move to it, but there didn’t seem to be a way to achieve it….

Meantime, a friend of mine suggested trying TextMate. I tried it. Didn’t especially like it. What particularly bothered me was that I had gotten used to diff’ing local history. So I gave up.

As luck would have it, just as I started a new project, the new Eclipse PDT Helios came out. I don’t even remember which feature I “upgraded” for…but it was a disaster. I won’t go into details, but many others are having problems, so Google will tell you all about it.

Meantime, another friend told me he switched to Textmate & decided to give it a week before giving up. That convinced me to try again. And now I “get it”. The command line integration is key!

My setup for the current client project is an svn repository. So I had a bright idea! Why not use git to version every file in the project on save? Just hook Textmate’s save to a git add and commit. While I like this idea, so far I haven’t quite figured out how and the person who said he’d post a method, hasn’t gotten to it yet.

No worries, as I had a different idea that would work for any text editor and be a little more flexible. I’m marking it down here so I can remember it in the future & perhaps give some others the same idea.

Using cron, once a minute, git add and commit all files in the project. Unbeknowest to me, Apple deprecated cron on the Mac when I started writing this…and it took me a fair bit to figure out what went wrong…

Upshot, first set up a git alias like so:

git config --global alias.add-commit '!git add -A && git commit'

Then on the command line, this will git add and commit in one go, with a commit message:

git add-commit -m 'My commit message'

So on cron, I have the following command:
* * * * * (. /Users/YOU/.profile && cd /Users/YOU/Workspace/YOURPROJECT && git add-commit -m 'autocommit') > /Users/YOU/Documents/cronlogs/cronlog-autocommmit.txt 2>&1

Note, that to test the cron, “su -” (iow su to root) and run the commands. That’ll give you an idea if git is in the path, if the alias is set up correctly, etc…

I set up the git alias in both environments. You can see I’m sourcing the .profile as well so root has git in its path….

So now, cron runs every minute. Which means that any save I’ve done will get committed more than frequently enough. I can do a diff on the svn repository….or a local diff on my git repository.

It’s janky, but does the trick and makes me happy 🙂

P.S. I was planning to talk more about Textmate, SmartSVN, GitX, Araxis Merge and whatever other tool I’ll wind up integrating with git diff…however this took me WAAAY longer than I expected and I’m BEAT!


Installing Apache / PHP / MySQL / phpMyAdmin / Eclipse Zend PDT / Zend Framework: on XP Gaming machine

Since I’m creating a new install of a development environment on an XP gaming machine, I thought I’d just document the process for posterity.

  1. Make sure you are running at least Service Pack 2.
  2. Here is the version I’m installing: http://www.apache.org/dist/httpd/binaries/win32/apache_2.2.11-win32-x86-no_ssl.msi
  3. I won’t repeat details that are on other websites already, so just follow the instructions from here, then I’ll tell you what I did differently
  4. Instead of adding “php5apache2.dll” to “LoadModule php5_module”, since we are on Apache 2.2, point it to filename “php5apache2_2.dll”.
  5. Install Webyog. Make sure to search for the community edition. While phpMyAdmin is great, it can be buggy sometimes and you should really develop with a proper client.
  6. Download the all in one Eclipse Zend PDT package.
  7. Download Zend Framework.
  8. Install phpMyAdmin. When you configure it, you may get complaints about mcrypt, bzip2, timezone and zip not being enabled. Fix it all and more by editing php.ini and
    // change the following lines from ...
    ;date.timezone =
    // ... to
    extension = php_bz2.dll
    extension = php_zip.dll
    date.timezone = America/Los_Angeles

    (note that you should pick your own timezone)

  9. I chose to enable mysqli extensions (extension=php_mysqli.dll) and disable mysql. Also, you may want to enable the pdo and pdo_mysql extensions.
  10. For development, it’s best to turn this on in php.ini:
    error_reporting = E_ALL | E_STRICT
  11. Depending on how your application is used, you may want to turn on short tags:
    short_open_tag = On
  12. Add include path to Zend library in php.ini…e.g.
     include_path = ".;C:\Documents and Settings\Administrator\My Documents\Zend\ZendFramework-1.7.5\library"
  13. To make sure that index.php shows in case there is no index.html, go to httpd.conf, and under <IfModule dir_module> add “index.php” after “index.html”.
  14. In httpd.conf, uncomment
    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf

    then add your path to docroot to that file

  15. If you are setting up more than one docroot, and you probably are going to do this if you’re installing Eclipse and Zend Framework, you need to configure the proper directives for the .htaccess to work, so find the Directory section and copy this part to httpd.conf:
    <Directory "C:\path\to\public">
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.2/mod/core.html#options
        # for more information.
        Options Indexes FollowSymLinks Includes ExecCGI
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        AllowOverride All
        # Controls who can get stuff from this server.
        Order allow,deny
        Allow from all
  16. Make sure to enable mod_rewrite in httpd.conf:
    LoadModule rewrite_module modules/mod_rewrite.so