2012-12-15 2 views
2

perf.txt에 코드에 대한 자동 생성 성능 데이터 일부를 저장했습니다. 코드를 향상시킬 때마다 perf.txt를 새 성능 데이터로 덮어 쓰는 스크립트를 실행합니다. 그러면 perf.txt를 커밋합니다.git 파일 히스토리를 여러 파일로 저장

돌이켜 보면 perf.txt를 겹쳐 쓰는 실수는 골치 아픈 실수였습니다. 이제는 분석/내 개선 그래프를 작성하고 싶습니다.하지만 할 수는 없습니다. 물론 이전 perf.txt 파일은 내 커밋 내역에 남아 있습니다. 그들을 얻을 수있는 쉬운 방법이 있습니까? 이상적으로 나는 perf ~ 1.txt, perf ~ 2.txt 등을 타임 스탬프와 함께 새로운 디렉토리에 갖고 싶습니다.

또는 git-bisect와 같은 커밋 내역 (예 : git next perf.txt)을 단순히 "재생"할 수 있지만 선형 적으로는 너무 효과적입니다.

답변

2

좋아, 나는 이것을 위해 쉘 스크립트를 만들 수 있었다. 그것이 잘 작동하는지 알려주세요.

업데이트 :

i=0; git rev-list HEAD package.json | while read sha1; do; git show "$sha1:package.json" > "$(printf "%04d" $i)-$sha1-package.json"; ((i++)); done 

윌 출력 :

$ ls *-package.json | cat 
0000-a15147199edff1b1c0fab89c66214abfb8c65d7c-package.json 
0001-51feba61197b837b7d55754a56e12f66f0624ba1-package.json 
0002-ed9e34482a303e7e64c397f89533dbe64f51cfbf-package.json 
0003-d01253e20158f53c08aa6bc0c1cf66806cd19148-package.json 
0004-d57363e800535a7400fde56e97d0a4cd424cffbb-package.json 
0005-6e995583a11b63bf1d94142da6408955ee93e7cc-package.json 
0006-6bc2a87943f59ad277cdee26aec1c25949c0f091-package.json 
0007-e06a8cae3a1de58b770a66cbd124cf50e809fb31-package.json 
0008-81bf63359641255dfd340714d0635be03bda8de9-package.json 
0009-95559f5117c8a21c1b8cc99f4badc320fd3dcbda-package.json 
0010-5e906366dd86dda95df050257513c95834020e5e-package.json 
0011-717cb2a5c7909ed16f7c599b02759b27fd2e4258-package.json 
0012-f18b75940e61a52ef9c0cf41a4bda3bcdae5c46c-package.json 
0013-3c86547a3b841807c4744af0fa4ee3894cc17a33-package.json 
0014-d5658e978d9a7234e537d57c45069ce223cb3853-package.json 
0015-286c4d91dde12ba32f4a56273d05374b1cbb79e7-package.json 
0016-46d680458b74fcf956f6161a2b73b6b00fc2541d-package.json 
0017-e64f89d9aaf26c2dae6c7f1ef29a2d3cadd0b4b2-package.json 
0018-bd84aad6cdde8cf3ce7842df1febb82fe9816647-package.json 
0019-6cf1542a8b823c6bdacf7e6e01dfcb58e9949ff4-package.json 
0020-1434b5b56756d02190afe552b626823c97b11a49-package.json 

분류 할 때 올바른 순서로 유지됩니다.


원본 :

i=0; git rev-list HEAD package.json | while read sha1; do; git show "$sha1:package.json" > "$i-$sha1-package.json"; ((i++)); done 

당신이 모든 3 개의 장소에서 원하는 파일을 package.json를 교체합니다.

이 같은 파일을 생성합니다 :

$ ls *-package.json | cat 
0-a15147199edff1b1c0fab89c66214abfb8c65d7c-package.json 
1-51feba61197b837b7d55754a56e12f66f0624ba1-package.json 
10-5e906366dd86dda95df050257513c95834020e5e-package.json 
11-717cb2a5c7909ed16f7c599b02759b27fd2e4258-package.json 
12-f18b75940e61a52ef9c0cf41a4bda3bcdae5c46c-package.json 
13-3c86547a3b841807c4744af0fa4ee3894cc17a33-package.json 
14-d5658e978d9a7234e537d57c45069ce223cb3853-package.json 
15-286c4d91dde12ba32f4a56273d05374b1cbb79e7-package.json 
16-46d680458b74fcf956f6161a2b73b6b00fc2541d-package.json 
17-e64f89d9aaf26c2dae6c7f1ef29a2d3cadd0b4b2-package.json 
18-bd84aad6cdde8cf3ce7842df1febb82fe9816647-package.json 
19-6cf1542a8b823c6bdacf7e6e01dfcb58e9949ff4-package.json 
2-ed9e34482a303e7e64c397f89533dbe64f51cfbf-package.json 
20-1434b5b56756d02190afe552b626823c97b11a49-package.json 
3-d01253e20158f53c08aa6bc0c1cf66806cd19148-package.json 
4-d57363e800535a7400fde56e97d0a4cd424cffbb-package.json 
5-6e995583a11b63bf1d94142da6408955ee93e7cc-package.json 
6-6bc2a87943f59ad277cdee26aec1c25949c0f091-package.json 
7-e06a8cae3a1de58b770a66cbd124cf50e809fb31-package.json 
8-81bf63359641255dfd340714d0635be03bda8de9-package.json 
9-95559f5117c8a21c1b8cc99f4badc320fd3dcbda-package.json 
+0

그것은했다! 나는 유닉스에서 너무 빨려서 뭔가 잘못했을 수도 있지만, 나는 당신의 줄을 extract.sh에 넣었다. 그리고 do (i ++)를 i = \'expr $ i + 1 \'로 바꾼다. 누락 된 유일한 것은 날짜이지만, 나는 그걸로 살 수 있습니다. 고맙습니다! – user1906830

관련 문제