2011-02-23 39 views
6

DÜZENLEME: Özeti: Git izin vermez tarihleri ​​onun "iç tarih biçiminde" (Dönemden beri saniye) de verilen 1973/03/03 09:46:40 (çağın + 100000000s) önce. Bu, "2011-02-24" kısa formu olarak "20110224" e izin vermek. - Bu bir hata yok: Gerçekten değil, aynı zamanda belgelenmiş değil. - Geçici çözüm: Yapamadığınızda git iç tarihine güvenmeyin. - için Teşekkür: hobbs

Herkese selam

ben git commit-ağacına izini gelmiş git filtre şube ile bazı sorunları var. - ayrıntılar için git-taahhüt-ağacın man sayfasına bakınız - 1970-01-01 için env GIT_AUTHOR_DATE="0 +0000" setleri "Git iç biçimini" kullanarak tarih olduğunu

#!/bin/bash 
# please run these commands in an empty directory 
# (should not destroy an existing repo, though. I think it would only 
# a few dangling objects) 

set -e -o pipefail 

git init 
tree=$(git write-tree) 
commit=$(echo "my first commit -- the tree is empty" | 
    env GIT_AUTHOR_DATE="0 +0000" git commit-tree $tree) 

echo "This is commit $commit:" 
git cat-file commit $commit 

Not: Bu komut dosyasını düşünün.

Ama bu senaryonun çıktı (ham taahhüt) neden git $ GIT_AUTHOR_DATE görmezden geliyor Şimdi

tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 
author Jane Doe <jane> 1298477214 +0100 
committer Jane Doe <jane> 1298477214 +0100 

my first commit -- the tree is empty 

mı? Bu önemliyse, git --version benim git version 1.7.1 verir. git tarih ayrıştırıcı kodunda Bulundu

cevap

19

:

/* 
* Seconds since 1970? We trigger on that for any numbers with 
* more than 8 digits. This is because we don't want to rule out 
* numbers like 20070606 as a YYYYMMDD date. 
*/ 
if (num >= 100000000 && nodate(tm)) { 

bu kod açıkça mümkün Unix tarihleri ​​gibi küçük numaralar reddeder ve dize başka bir tarih biçiminde ayrıştırmak olmadığından

, GIT_AUTHOR_DATE geçersiz olarak kabul edilir ve tamamen (ve görünüşte sessizce) görmezden gelinir.

Yöntemin Aksi takdirde, diğer tarih biçimlerinden birini :)

+0

Mükemmel yakalamak kullanmak 1973 sonrasında gerçekleşen hareketin sentezleyerek için sürece sopa olarak olsa sorunsuz çalışır! – Arrowmaster

+0

Vay, keşke bu defa çok defa yapabilirdim. Ne yeryüzünde bunu kontrol etmeyi düşündün? –

+4

@Adrian Dokümanlardaki hiçbir şeyi görmedim ve zaten git kaynağını kontrol ettim ... bu yüzden greve başladım. Bazen RTFS problemin kalbine her şeyden daha hızlı gelir :) – hobbs

İlgili konular