Easy partial branch merging in git

Recently I have been trying to diversify my usage of source code control so as to be more familiar with the different tools that are currently popular so I have been using git more for personal projects and recently I came across a process hurdle that didn’t seem to have a simple solution:

  • We have a project in git hosted as a private repo at GitHub
  • We have multiple contributors
  • Development is happening in a development branch
  • development contains many commits that we don’t want in master because of the differences between production and development environments
  • development also contains code we don’t want to release yet
  • We want to maintain attribution for code changes in what is merged to master

All in all, it felt like this should be simple, right, surely I can just git checkout master && git merge development {path_to_folder_containing_code} right … well not really.

Continue reading “Easy partial branch merging in git”

Setting up an Airport Express on Mountain Lion

The old style Airport Expresses are amazing and have been around a long time, they are great for extending your home network and also great for setting up impromptu networks when travelling.

However, as of Mountain Lion the Airport Utility (which is now pretty dumbed down) doesn’t support them which is kind of lame – I guess when the devices once had an expected life of 18 months that isn’t much of a surprise.

There is however still a solution, AirPort Utility 5.6 for Mac OS X Lion, which of course you can’t install on Mountain Lion until you find these excellent instructions.

From frustrated to happy in the space of 5 minutes, now I can get this Tiger running Mac Mini from 2006 back online alongside the new Mac Book Air that replaces it.

Now I just need to see if I can set the second one up for my in-laws too so they can get iPlayer on the TV 🙂

Finding “popular” IP addresses in access_log files

Every now and then I find myself needing to quickly analyse a set of access_log files to see who the most common visitors are so that I can decide if there are any abusers I should be blocking or poorly configured services running somewhere that I can try to get fixed.  I can never remember the quickest was to do this so I decided to write down the “one liner” that I cobbled together this time so I can hopefully find it next time and not have to reinvent the wheel again.

Here is the one-liner I used to find the top IPs this time:


sed -e 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*$/\1/' -e t -e d access.log | sort | uniq -c | egrep -v "\s([0-9]|[0-9][0-9]|[0-9][0-9][0-9]) "

Splitting this out we have:

  1. A call to <code>sed</code> to extract all the IP Addresses from the access_log file
  2. A call to <code>sort</code> to sort the list of IPs
  3. A call to <code>uniq</code> to create a list of unique IPs with counts
  4. A call to egrep to filter the unique list down to IPs we at least 1000 appearances – this will need tuning depending on the volume of requests / time period the file covers.

Always show admin bar

I like the admin bar that we are adding in the soon to be released WordPress 3.1 so much that I wanted it to always show on my site.  This way you get an easy to use search box on every page even when logged out.

I wrote a quick plugin file which I dropped into the wp-content/mu-plugins folder on this site. Here is the code I used in case you want to do the same:


<?php
function pjw_login_adminbar( $wp_admin_bar) {
 if ( !is_user_logged_in() )
 $wp_admin_bar->add_menu( array( 'title' => __( 'Log In' ), 'href' => wp_login_url() ) );
}
add_action( 'admin_bar_menu', 'pjw_login_adminbar' );
add_filter( 'show_admin_bar', '__return_true' , 1000 );

As you can see to make it even more useful I’ve added a Log In link so I can use it to log in to the site.

As with anything else to do with the Admin bar this code requires WordPress 3.1 to work.