Git: author en email aanpassen in history

Het gebeurt al wel eens dat je in een commit de verkeerde author of email hebt staan. Als je zo een reeks commits hebt in een project, kan je met een shell script alle commits herschrijven.

#!/bin/sh
 
git filter-branch --env-filter '
 
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
 
if [ "$GIT_COMMITTER_EMAIL" = "old_mail@example.com" ] || [ "$GIT_COMMITTER_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    cn="New Name"
    cm="new_email@example.com"
fi

if [ "$GIT_AUTHOR_EMAIL" = "old_mail@example.com" ] || [ "$GIT_AUTHOR_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    an="New Name"
    am="new_email@example.com"
fi
 
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
' -f -- --all

Nadien moet je dan wel geforceerd pushen.

git push --force

Wel opletten als er nog andere mensen zijn die een lokale versie hebben van de repo…

Firmware resetten van oude iMacs

Ik heb nog enkele oude iMacs (G3) staan, waarvan ik de opstartschijf niet meer kan selecteren. De oplossing hiervoor is om de Open Firmware, PRAM en NVRAM van de iMacs te resetten.

  • Opstarten met command+option+P+R ingedrukt, en ingedrukt houden tot de Mac opnieuw boot.
  • Opstarten met command+option+O+F ingedrukt. De Open Firmware zal booten.
  • In de OF onderstaande commando’s uitvoeren (de Mac zal automatisch herstarten)
    reset-nvram
    set-defaults
    reset-all 

Vanaf nu zou booten met de C of Alt toets weer moeten werken…

Abdij Maria Toevlucht in Zundert

De Abdij Maria Toevlucht is een trappistenabdij in het Nederlandse Zundert. Sinds een jaar brouwen de monniken er daar een nieuw trappistenbier.

De abdij vindt haar oorsprong in de Franse seculariseringspolitiek die zich afspeelde op het einde van de 19de eeuw. Deze politiek dreigde met name decontemplatieve kloosters met uitzetting. Dit gold ook voor de monniken van de Abdij op de Katsberg te Godewaarsvelde en dezen stichtten als gevolg hiervan in 1881 de Abdij Koningshoeven in Tilburg.
Gezien de situatie in Frankrijk wilde men nog meer kloosters stichten en in 1897 kreeg de abdij Koningshoeven door Anna Catharina van Dongen een stuk grond aangeboden nabij Zundert. Dit was gelegen in het destijds moerassige gebied “De Moeren”, halverwege Zundert en Rucphen.
Enkele monniken uit Koningshoeven begonnen hier in 1899 met de bouw van een nieuw klooster. De voorlopige kapel hiervan werd op

24 mei 1900 ingewijd. Er waren toen twaalf monniken. De naam “Maria Toevlucht” werd gekozen omdat de priorij feitelijk een toevluchtsoord zou moeten worden voor het geval de Franse trappisten verbannen zouden worden. In feite is het nooit zover gekomen.

via Wikipedia

 

Abdij Maria Toevlucht in Zundert

Kerk van de Abdij Maria Toevlucht in Zundert (1)

Kerk van de Abdij Maria Toevlucht in Zundert

Nginx routing voor ownCloud

Ik kreeg de url routing van ownCloud maar niet aan de praat op mijn nieuwe Nginx installatie, de standaard routing statement werkte niet omdat ownCloud urls heeft met index.php in de url (bv. index.php/apps/files). De oplossing bleek onderstaande Nginx statement:

if (!-e $request_filename)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}

Uiteraard moeten er nog andere configuraties toegevoegd worden om ownCloud naar behoren te doen werken…

Fish shell & sudo !!

Het gebeurt maar al te vaak dat je in de terminal een commando opnieuw wilt uitvoeren maar dan met sudo ervoor. Op de meeste systemen typ je dan sudo !! om het vorige commando als super user uit te voeren, maar fish shell doet dat niet.

Het is echter mogelijk om de sudo functie te herdefiniëren om dit probleem op te lossen.

function sudo
    if test "$argv" = !!
        eval command sudo $history[1]
    else
        command sudo $argv
    end
end

Je maakt een nieuwe file aan in ~/.config/fish/functions/ met de naam van de functie. De functie wordt dus opgeslagen in het bestand ~/.config/fish/functions/sudo.fish.

Vanaf nu kan je weer sudo !! gebruiken in fish!

Fish: een handige, gebruiksvriendelijke command line shell

fish shell logoZoals vele andere informatici en programmeurs breng ik dagelijks (te) veel tijd door in de command line omgeving. Alle manieren om het werk in de Terminal te versnellen zijn dan ook welkom. Fish shell is daar één van.

fish is een “smart and user-friendly” command line shell voor Unix besturingssystemen (en voor Windows). Het voordeel van zo’n shell is dat je veel minder moet typen, en je meer informatie te zien krijgt.

Enkele key features van fish:

  • Autosuggestions
  • Glorious VGA Color: een gekleurde terminal maakt alles een pak overzichtelijker
  • Scripting
  • Man Page Completions, want niemand kent alle commando’s en opties uit het hoofd.
  • Simpele configuratie
  • … en veel meer …

 

Enkele schermafbeeldingen

 

Handige CMake configuratie

Handige CMake configuratie waarmee je alle source files in een project automatisch compileert en installeert.

Simpeler kan haast niet…

 

cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS "--std=c++11")

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src)

file(GLOB SRC
    "src/*.cpp"
)

add_executable(ProjectName ${SRC})
install(TARGETS ProjectName DESTINATION ${PROJECT_SOURCE_DIR}/bin)

 

Deze CMakeLists.txt plaats je in de root directory. Code komt in de src map, executable komt in de bin map, en het project compilen (en CMake files genereren) doe je in de build map.

Mac: Terminal venster maximaliseren

Terminal venster maximaliseert niet volledigWanneer je op Mac OS X het Terminal venster maximaliseert zal dit venster niet steeds het hele scherm vullen. Onderaan en rechts van het scherm zal er wat ruimte overblijven. Dit komt omdat het Terminal venster met rijen en kolommen werkt, en dus niet per pixel zal vergroten/verkleinen, maar per rij.

 

Na veel geëxperimenteer met de instellingen van Terminal, heb ik ondervonden dat je het probleem toch kan oplossen. Dit door de waarden van de rijen en kolommen bij de instellingen van Terminal te verhogen, totdat het hele beeldscherm gebruikt wordt. (Klik op Terminal, Voorkeuren of gebruik de sneltoets CMD + ,)

Terminal Voorkeuren

 

Uiteindelijk zal je Terminal venster dan perfect gemaximaliseerd zijn…

Terminal maximaliseren