Archive for januari, 2013

Prompt i terminalen som visar git- och svn-status

tisdag, januari 29th, 2013

Här kommer ett tips om du arbetar med Git eller SVN ifrån terminalen. Det går att modifiera prompten så att den visar statusen för aktuell arbetskopia.

Normalt ser prompten ut ungefär så här, beroende på distribution (jag kör Linux Mint för tillfället).

Min prompt

När jag hoppar in i en katalog som är utcheckad från SVN ser det ut så här.

Nu syns information om aktuell branch och revision, i detta fall är branchen branches/RB-1.8 och revisionen 837. Att det visas i grönt betyder att det inte finns några modifieringar. Om jag ändrar i en fil kommer prompten att bli röd.

Modifierad arbetskopia

Arbetar du med Git syns liknande information i prompten. På bilden nedan syns hur jag går in i en katalog som är klonad från Git, skapar en ny branch med git flow och redigerar en fil. Prompten byter även här färg till rött när det finns modifierade filer och när jag committar mina ändringar ändrar färgen till grön igen. Jag slutför min feature (branch) och promten ändras igen så att aktuell branch (develop) visas.

Git prompt

För att få den här funktionaliteten läggar man till kodsnutten nedan i filen .bashrc som finns i din hemkatalog, finns den inte går det bra att skapa den. För att scriptet ska fungera måste filen /etc/bash_completion.d/git finnas, den kommer vanligen med i installationen av git, åtminstone om du installerar med apt-get install git.

Här kommer då koden.

# Custom PS1 prompt to show git and svn repos, branches and their status
Color_Off="\[\033[0m\]"       # Text Reset
Green="\[\033[0;32m\]"        # Green
BGreen="\[\033[1;32m\]"       # Green
BYellow="\[\033[1;33m\]"      # Yellow
IRed="\[\033[0;91m\]"         # Red
PathShort="\w"

export SVN_SHOWDIRTYSTATE=1
export PS1='$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
  # In Git repo
  echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
  if [ "$?" -eq "0" ]; then \
    # Clean repository - nothing to commit
    echo "'$Green'"$(__git_ps1 " (%s)"); \
  else \
    # Changes to working tree
    echo "'$IRed'"$(__git_ps1 " {%s}"); \
  fi) '$BYellow$PathShort$Color_Off'\$ "; \
elif [[ -d ".svn" ]] ; then \
  # In SVN repo 
  r=`__svn_rev` ;\
  b=`__svn_branch` ;\
  out=`svn status | grep -c ".*"` ; \
  if [ $out -eq 0 ] ; then \
    echo "'$Green'[$b:$r] '$BYellow$PathShort$Color_Off'\$ "; \
  else \
    echo "'$IRed'[$b:$r] '$BYellow$PathShort$Color_Off'\$ "; \
  fi; 
else \
  @2 - Prompt when not in GIT repo
  echo " '$BGreen'\u@\h '$BYellow$PathShort$Color_Off'\$ "; \
fi)'

# Outputs the current trunk, branch, or tag
__svn_branch() {
    local url=
    if [[ -d .svn ]]; then
        url=`svn info | awk '/URL:/ {print $2}'`
        root=`svn info|awk '/Repository Root/ {print $3}'`
        if [[ $url =~ trunk ]]; then
            echo trunk
        elif [[ $url =~ /branches/ ]]; then
            echo ${url##$root/}
        elif [[ $url =~ /tags/ ]]; then
            echo ${url##$root/}
        fi
    fi
}

# Outputs the current revision
__svn_rev() {
    local r=$(svn info | awk '/Revision:/ {print $2}')
    if [ ! -z $SVN_SHOWDIRTYSTATE ]; then
        local svnst flag
        svnst=$(svn status | grep '^\s*[?ACDMR?!]')
        [ -z "$svnst" ] && flag=*
        r=$r$flag
    fi
    echo $r
}

Rock on!

Tömma cache och generera autoloads i eZ Publish ifrån Netbeans

måndag, januari 14th, 2013

För att slippa hoppa ut i terminalen och köra scripten när man uppdaterat från svn, kan man göra följande.

Skapa en fil, exempelvis run.php i roten på ez-installationen. Kom ihåg att lägga till den i svn ignore! Filen ska se ut så här:


<?php
/*
 * Rensa cache och generera autoloads
 *
 */
system("/usr/bin/php bin/php/ezpgenerateautoloads.php");
system("/usr/bin/php bin/php/ezcache.php --clear-all --purge");
?>

1. Öppna projektet i Netbeans.
2. Klicka på File-menyn och välj Project Properties.
3. Klicka på Run Configuration i vänster-menyn.

Gör följande inställningar:
Run As: Script (run in command line)
Index File: run.php (Alltså filen du skapade tidigare)
Working Directory: /var/www/hmpr (Alltså ez root)

Se bilden hur det ska se ut.

Netbeans inställningar

Klicka Ok.
Nu kan man köra detta genom att antingen välja Run-menyn och sedan Run Project, eller genom att trycka F6!