2014-04-28 7 views
3

내 repo가 ​​정리 작업에 지연되었습니다. 좋은 출발점은 모든 파일을 마지막으로 터치 한 순서대로 나열하고 가장 오래된 파일부터 시작하는 것입니다. 이것을 달성 할 수있는 방법이 있습니까?마지막 수정 날짜순으로 파일 나열

+0

실제로 수정 된 저장소의 모든 (로컬) 파일을 나열하거나 체크인으로 파일이 수정 된 순서를 나열 하시겠습니까? 즉, 실제로 자식 동작을 요구하고 있습니까? 아니면 쉘/파일 시스템 작업을 원하십니까? –

답변

5

표준 git 명령을 사용하여이 작업을 수행 할 방법이 없습니다. 필요한 것은 전체 저장소에 대해 git blame의 일종이며, 각 파일을 변경 한 기록의 마지막 커밋을 식별하는 것입니다.

#!/bin/bash 

function last-modified() 
{ 
    git blame -p "$1" | awk ' 
     BEGIN { 
      print 0; 
     } 
     $1 == "author-time" { 
      print $2; 
     }' | sort -n | tail -n 1 
} 

function list-files() 
{ 
    for file in $(git ls-files); do 
     echo "$(last-modified $file) $file" 
    done 
} 

list-files | sort -n 

이 방법은 수 : 물론, 해당 타임 스탬프에 따라 최신의 타임 스탬프가 파일에 내용을 추가하는 커밋 식별하기 위해 도자기 출력을 구문 분석, 표준 git blame를 사용하고 파일을 정렬 할 수 콘텐츠를 에 추가하여을 파일에 등록하는 경우 콘텐츠는 이 아니며 파일에서이 제거되었습니다. 또한 저장소에 author-time으로 시작하는 줄이있을 때 중단됩니다.

관련 문제