8/14/2013

Dodiff

Ostatnio często muszę robić diffy w gicie i zapisywać je do plików. Przykładowa nazwa pliku z diffem wygląda tak: {branch}-{branch/commit}.diff

Diffy pomiędzy poszczególnymi commitami nie są mi potrzebne. Aby otrzymać takiego diffa można wykonać komendę git diff {branch/commit} > ~/diffs/{branch}-{branch/commit}.diff.
Przykłady:
git diff develop > ~/diffs/develop-master.diff
git diff 66666 > ~/diffs/66666-develop.diff
git diff 18361 > ~/diffs/18361-develop.diff
git diff 47529 > ~/diffs/47529-0dbf4fa.diff
Jak widać jest trochę pisania.
  •  po co za każdym razem wpisywać katalog w którym ma zostać stworzony plik
  • po co podawać nazwę brancha na której właśnie jesteś (i to dwa razy!) ;)
  • pracuj na gałęziach, których nazwy składają się wyłącznie z cyfr to oczopląsu dostaniesz po kilkunastu takich komendach
Dlatego też postanowiłem napisać do tego prostą funkcję w bashu. Założenie było proste, mam podać nazwę funkcji i jako pierwszy parametr przekazać nazwę brancha/commita między którym chcę zobaczyć różnice.

Skrypt ma sam sprawdzić czy jest już katalog diffs w moim katalogu użytkownika, jak nie ma, to niech go tworzy i dodatkowo, niech sam pobiera informację na temat nazwy brancha na którym aktualnie jestem.

Tak powstała funkcja dodiff (ja ją wrzuciłem standardowo do ~/.bash_aliases):
dodiff() {
    if [ ! -d ~/diffs ]; then
        mkdir -p ~/diffs
    fi

    branch=`git rev-parse --abbrev-ref HEAD`
    git diff $1 > ~/diffs/$branch-$1.diff
}
Przykład użycia: showterm.

8/04/2013

bumpversion

bumpversion to ciekawa paczka do automatycznego podbijania wersji twojej paczki ;).

(screencast)

 Jedną komendą jesteś w stanie podbić wersję w swojej paczce w kilku miejscach (oczywiście, najlepiej informację o wersji trzymać w jednym miejscu, ale czasami jesteś zmuszony, aby zrobić to w kilku plikach).

Przykładowo, twoja aktualna wersja to 0.1.10, zrobiłeś małego fixa i chcesz podbić wersję do 0.1.11. Dodatkowo informacje na temat wersji trzymasz w pliku setup.py oraz w random_words/__init__.py. Zapomniałem dodać; jak chcesz to zajrzyj do paczki RandomWords, bo to na niej jest przykład.

Teraz wystarczy odpalić:
bumpversion --current-version 0.1.10 patch setup.py random_words/__init__.py
i gotowe. Skrypt podbił wersję w pliku setup.py oraz w random_words/__init__.py


Dokumentację i więcej przykładów użycia znajdziesz na githubie.

P.S. Screena musiałem zrobić lokówką bo ubuntu odmówiło przed chwilą posłuszeństwa, a nie chce mi się resetować systemu.