2013-02-26 2 views
1

브랜치간에 앞뒤로 전환하는 git 저장소에서 ruby ​​(또는 운영 체제 기반 수정 방법)에 표시된 파일 수정 시간은 mtime입니다 예 : ls -l을 통해) 파일을 수정 한 실제 시간 대신 내가 마지막으로 분기를 변경 한 시간을 표시합니다.git 저장소 (루비에서)의 올바른 파일 수정 시간 얻기

모든 파일에 대해 Git 저장 파일 수정 시간을 알고 있지만 실제로 수정 날짜를 표시하려면 어떻게해야합니까? 루비 전화에서 왔어?

이렇게하는 가장 좋은 루비 방법은 무엇인지

git log -1 --format="%ad" -- path/to/file

하지만 : 나는 명령 줄에서이를 얻을 수 있습니다 참조하십시오.

답변

1

저는 이것이 불가능하다고 생각합니다. 즉, git은 수정 시간이 아닌 커밋 시간 만 저장합니다. 그러나이 메타 데이터를 별도의 파일에 저장하는 git에 추가 된 metastore을 확인해 볼 수 있습니다.

그러나 커밋 시간이 충분하기 때문에 루비에서 직접 명령을 실행할 수 있습니다. 예 :

%x(git log -1 --format='%ci' path/to/file) 

또는 ruby git libraries 중 하나를 사용할 수 있습니다. 나는이 라이브러리를 직접 사용하지 않았기 때문에 그 중 어떤 라이브러리도 보증 할 수 없다.

편집 : 커밋 시간에 대한 부분이 OP의 용도로 충분하기 때문에 추가되었습니다.

+0

커밋 시간이 파일의 마지막 수정 시간이 아닌 이유를 잘 모릅니다. 따라서 파일이 마지막으로 커밋 된 시간에 액세스하면 내 경우에 문제가되지 않습니다. 왜 내가 메타 스토어가 필요한지 잘 모르겠다. – cboettig

+0

커밋 시간은 커밋 자체의 시간이며 커밋 된 트리와 아무 관련이 없습니다. – jthill

+1

@cboettig 아, 커밋 시간이 충분하다면, 파일의 첫 번째 로그 항목을보고 조사 할 수 있습니다. 오 ... 그리고 지금 당신이 git log 예제로 당신의 포스트를 편집 한 것을 봅니다. 이것을 루비에서 액세스하려면 명령을 직접 실행할 수 있습니다. '% x (git log -1 --format = '% ci'path/to/file)'과 같은 것이거나, [ruby git libraries] (https://www.ruby-toolbox.com/categories) 중 하나를 사용하십시오./git_Tools). 나는이 라이브러리를 직접 사용하지 않았기 때문에 그 중 어떤 라이브러리도 보증 할 수 없다. – Steinar