2013-09-28 2 views
0

누가 추가/업데이트 된 파일에 대해 시간을 리포할지 (또는 다른 어떤 것이지만 커밋 메타 데이터에 의존) mtime을 변경하는 방법을 알고 있습니까?git pull mtime on

우리는 파일 mtime을 테스트하는 몇 가지 논리를 가지고 있지만, 변경된 파일에 백엔드 서버마다 다른 mtime이 있습니다.이 때문에 우리는 몇 가지 버그가 있습니다.

답변

0

git fetch을 수행 할 때 파일을 업데이트/추가한다고 가정하면 새 개정판의 모든 파일/디렉토리를 터치하면서 rebase를 수행하는 git-rebase-and-touch 스크립트 파일을 만들 수 있습니다. 당신은 지금 git pull를 사용하는 경우

#!/bin/bash 

saveIFS=${IFS} 
IFS=$'\n' 
startrev=$(git rev-parse HEAD) 
git rebase 
for rev in $(git rev-list --reverse ${startrev}..HEAD); do 
    stamp=$(git log --pretty="%aD" ${rev}~..${rev}) 
    IFS=$'\n' 
    for filename in $(git diff --name-only ${rev}~..${rev}); do 
     file="" 
     IFS='/' 
     for part in ${filename}; do 
      file=${file}/${part} 
      file=${file#/} 
      touch -c --date="${stamp}" "${file}" 
     done 
    done 
done 
IFS=${saveIFS} 

대신 git fetch를 사용 : 같은

스크립트가 보일 것이다.

+0

오, 나는이 작지만 위대한 자식 기능에 대한 옵션이 있다고 생각했습니다 :) 나는 스크립트를 원치 않지만 감사합니다! 그것은 어쨌든 작동해야합니다. 지금 당장 시도 할 것입니다. –

+0

'$ {rev} ~ .. $ {rev}'에 대한 편리한 구문은 $ {rev} ^! – jthill

-1

파일 타임 스탬프를 조정하는 것은 위험한 일이며 타임 스탬프는 평상시 의미하는 것 이외의 다른 것을 의미한다고 여기는 것보다 훨씬 위험합니다. 타임 스탬프뿐 아니라 신뢰성과 유지 보수성에 영향을주는 모든 것, 이해와 감사가 어렵습니다. 합법적 인 이유로 파일이 변경되어 시스템이 고장났습니다.

확인하려는 타임 스탬프가 커밋 메타 데이터에 기록되어있어 가져 오는 것이 효율적이지 않습니다. 타임 스탬프를 인덱스 파일 또는 일부 파일로 추출하여 해당 파일에서 확인하십시오. 그렇지 않으면 사람들이 "모든 것이 그럴 것 같지 않습니다"라는 설정을 학습하게됩니다.

+0

입니다. –