Hoje achei que estava fazendo uma operação simples:
git blame file | sort -k 3
Para obter todas as linhas de file
classificadas pela data em que foram alteradas pela última vez. Infelizmente, parece não estar ordenando corretamente. funciona se eu fizer o seguinte:
git blame file | cut -c 20- | sort
Que apenas corta a primeira parte da linha e depois faz o tipo. O sucesso deste comando indica para mim que sort
pode na verdade fazer a operação que eu estava tentando. Por que não funcionou?
Aqui está uma linha de exemplo da saída de git blame file
:
35d8e9eb (username 2007-01-17 03:58:04 +0000 155) Some text on line 155
Editar: Usar qualquer número razoável além de 3
na linha de comando original parece funcionar bem - eu posso classificar pelo hash (campo 1), o nome de usuário (campo 2), a hora do dia (campo 4), ou o número da linha (campo 6), mas a data (campo 3) não funciona - não consigo identificar em qual ordem ela realmente acaba ...
Editar 2: Eu fiz um arquivo de entrada sanitizado que mostra o mesmo problema. Aqui está cleaned.txt
:
cb7bb041 (eeeeeee 2010-12-14 19:41:18 +0000 42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)
E a saída de sort -k 3 cleaned.txt
:
$ sort -k 3 cleaned.txt
cb7bb041 (eeeeeee 2010-12-14 19:41:18 +0000 42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)
Como você pode ver, a classificação no campo de data não parece ter ocorrido. Aqui está a saída de cut -c 20- cleaned.txt | sort
:
$ cut -c 20- cleaned.txt | sort
2007-01-17 03:58:04 +0000 135)
2010-01-30 04:26:28 +0000 178)
2010-12-14 19:41:18 +0000 42)
Classificar datas nesse caso funciona bem! Alguma sugestão?