2011-07-01 14 views
19

Dla moich codziennych zmian, lubię wystawiać moje zobowiązania dla odświeżenia tego, nad czym pracowałem.git log od wczoraj tylko dla dni roboczych

Mam następujący alias:

standup = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(green)<%an>%Creset' --abbrev-commit --date=relative --committer='me' --all --since='yesterday' 

Jednak to nie działa na poniedziałek rano z powodu weekendu.

Czy ktoś wie, jak używać git log --since dla zestawu dni roboczych, takich jak poniedziałek - piątek, czy wtorek - sobota?

+0

co to jest - opcja menedżera? Mam -committera na moim gitlogu, ale nie rozpoznaje "mnie" jako zamiennika dla mojego user.name – codemonkey

+1

To był literówka, którą poprawiłem powyżej. – Cellze

Odpowiedz

24

Zakładając powłoki POSIX-y, w moim przypadku bash:

function yesterworkday() 
{ 
    if [[ "1" == "$(date +%u)" ]] 
    then 
     echo "last friday" 
    else 
     echo "yesterday" 
    fi 
} 

git log --since="$(yesterworkday)" 

Znowu wszystkie kredyty przejść do autorów git do podejmowania tego szalenie proste akceptując „w ostatni piątek” jako specyfikacja ważna data najpierw!

PS. aby ten alias git, trzeba podać w powłokę bash aliasu, będę zmieniać z próbką w minutę

Edit realizacji tej logiki bezpośrednio do aliasu git okazuje się trudne (ze wszystkimi wymaganymi cytowania). Zobacz tutaj pomysłów: .gitconfig alias function call

pełni polecam dokonanie skrypt o tym, i można aliasu skrypt powłoki bezpośrednio tak:

standup = !$HOME/standuplog.sh 

lub dodać do jednej z $PATH foldery i nazwij go git-standup .

+0

Pozdrawiam @sehe działa idealnie. – Cellze

+0

Będzie bardziej uniwersalny, jeśli użyjesz flagi '% u' zamiast"% a ", która zwróci trnowany dzień tygodnia, więc nie będzie działać dla użytkowników nieanglojęzycznych (takich jak ja). – Hauleth

+0

@sehe - nope. Jeśli używasz '% u', wtedy' 1' jest poniedziałek. – Hauleth