Automatizza la marcatura temporale dei commit Git con una GitHub App
Se hai mai provato a dimostrare quando è avvenuto un commit Git, conosci la routine manuale: creare una ricevuta crittografica per un hash di commit, archiviare il file .ots in un luogo duraturo, mappare quella ricevuta al commit corretto e ripetere il processo per ogni branch e repository che conta. Salta un commit e avrai un buco nel tuo registro di prior art.
Timestamp GIT sostituisce quella routine con una GitHub App che marca temporalmente i commit Git automaticamente. Questo articolo riguarda il percorso di automazione, non i concetti crittografici sottostanti. Per informazioni sulla prova di esistenza e sul perché è importante, consulta Proof of Existence for Code: What It Is and Why It Matters.
Il lavoro manuale di marcatura temporale che puoi eliminare
La marcatura temporale manuale di solito fallisce per motivi banali, non per motivi di sicurezza.
- Dimentichi di marcare un branch di funzionalità importante.
- Le ricevute finiscono sparse tra laptop, artefatti CI e cartelle casuali.
- Non c’è una mappatura chiara tra i file di ricevuta e i commit specifici.
- Diversi membri del team usano processi diversi, o nessun processo.
- Quando una disputa si verifica davvero, scopri che la ricevuta non è mai stata creata.
Il modo difficile è lavorare direttamente con OpenTimestamps: installare gli strumenti, marcare gli hash dei commit a mano e archiviare i file di ricevuta da soli. Questo approccio funziona tecnicamente, ma è un lavoro che compete con lo sviluppo vero e proprio.
Timestamp GIT ti toglie quel lavoro dalle spalle. È un SaaS gestito e una GitHub App che automatizza completamente e nasconde il protocollo OpenTimestamps. Una volta installata, osserva i tuoi repository, raccoglie gli hash dei commit e li ancora nella blockchain di Bitcoin ogni notte. Nessuno strumento CLI, nessuna gestione manuale delle ricevute, nessun dover ricordare.
Configurazione una tantum: collega il tuo repository alla GitHub App
Il modello di configurazione è deliberatamente noioso: installa una volta, collega i repository e vai avanti.
Modalità Standard con la GitHub App:
- Installa la Timestamp GIT GitHub App dal GitHub Marketplace.
- Concedi l’accesso ai repository che vuoi monitorare.
- Scegli dove archiviare le prove: un branch dedicato nello stesso repository o un repository ombra separato.
- Fatto.
Dopo l’installazione, la GitHub App inizia automaticamente a monitorare i nuovi commit tramite webhook. Non ci sono modifiche al codice, nessun file di configurazione locale e nulla da installare sulle macchine degli sviluppatori.
Permessi in Modalità Standard:
- L’app ha bisogno di accesso in sola lettura al repository sorgente per poter leggere l’hash del commit HEAD.
- Ha bisogno di accesso in lettura-scrittura al repository o branch di destinazione dove verranno archiviati i file di prova.
- Non legge né archivia mai il tuo codice sorgente effettivo.
Modalità Enterprise ZK per ambienti a conoscenza zero:
Se la tua politica di sicurezza dice che il tuo codice sorgente non deve mai lasciare la tua infrastruttura, puoi usare la Modalità Enterprise ZK. Una GitHub Action di 12 righe viene eseguita dalla tua parte e invia solo l’hash del commit all’API di Timestamp GIT. In questa modalità, Timestamp GIT non ha bisogno di accesso in lettura al repository sorgente — solo accesso in lettura-scrittura al repository di destinazione dove vengono archiviate le prove.
Questa distinzione è importante per i team di conformità: la Modalità Standard legge gli hash dei commit da GitHub, mentre la Modalità Enterprise ZK invia solo hash dalla tua GitHub Action.
La pipeline automatizzata: dal commit all’ancoraggio su Bitcoin
Dopo la configurazione, la pipeline viene eseguita senza intervento manuale.
Ogni notte, un processo worker raccoglie gli hash dei commit in sospeso del giorno e li elabora in un batch:
- Gli hash dei commit vengono rilevati dalla GitHub App o inviati dalla tua Enterprise ZK Action.
- Gli hash rimangono in una coda in memoria fino all’esecuzione notturna.
- Un worker cron di mezzanotte raggruppa gli hash in sospeso per repository.
- Il worker crea file manifest per ogni repository.
- Costruisce un albero di Merkle dal batch giornaliero.
- Crea le prove OpenTimestamps usando calendari OTS pubblici.
- La radice di Merkle viene ancorata in un blocco Bitcoin.
I file manifest e le ricevute .ots vengono quindi inviati al tuo branch timestamps dedicato o al repository ombra.
Una nota importante sui tempi: la conferma su Bitcoin richiede diverse ore, normalmente circa tre ore. Poiché il batch viene eseguito a mezzanotte e l’ancoraggio si completa più tardi, le prove di solito compaiono il giorno successivo. Quel ritardo non è un fallimento — è la rete Bitcoin che fa il lavoro che rende la marca temporale immutabile.
Puoi controllare l’ultimo stato ancorato con l’API REST:
# Informazioni sull'ultimo blocco Bitcoin ancorato
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# Conteggio totale dei commit marcati/committati
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Riepilogo combinato usato dai badge Shields.io
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
Sostituisci acme/webapp con il tuo utente o organizzazione GitHub e il nome del repository.
Per un README pubblico, puoi incorporare un badge di verifica. La pagina Repository Connected fornisce lo snippet Markdown dopo l’installazione. Un badge tipico appare così:
[](https://timestampgit.dev/status/acme/webapp)
Per i repository privati, gli URL di stato sono protetti con un HMAC crittografato. Solo gli utenti autorizzati possono visualizzare lo stato di quei repository, e l’HMAC è specifico per l’istanza del server.
Monitoraggio e gestione dei fallimenti: mantenere sane le tue prove
Automatizzazione non significa ignorare il sistema. Significa monitorare il risultato invece di eseguire il compito a mano.
La pagina di stato del repository è la tua dashboard principale di salute. Mostra:
- Longevità delle prove
- Data di ancoraggio più antica
- Regolarità giornaliera
- Dati su blocchi e transazioni Bitcoin
- Una heatmap calendario dei giorni marcati
- CSV di audit scaricabile
- Certificato PDF per ogni data marcata
Per il monitoraggio programmatico, gli endpoint API pubblici coprono i casi comuni:
# Controlla il blocco ancorato più recente
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# Conta quanti commit sono stati marcati
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Recupera un riepilogo combinato per script o Shields.io
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
Questi endpoint possono essere collegati al tuo monitor di uptime esistente, alla dashboard interna o al controllo CI. Ad esempio, uno script pianificato può chiamare statusLast una volta al giorno e avvisare se manca la data di ancoraggio prevista.
Gli scenari di fallimento comuni includono:
- Accesso al repository revocato in GitHub.
- GitHub App disinstallata.
- Problemi di rete tra GitHub e il servizio Timestamp GIT.
Questi fallimenti emergono sulla pagina di stato del repository invece di fallire silenziosamente. Poiché gli hash dei commit sono raggruppati per data, un’esecuzione notturna mancata può recuperare gli hash in sospeso nel batch successivo riuscito.
Per conformità e archiviazione, scarica periodicamente il CSV di audit e il certificato PDF. Archiviali nel tuo archivio legale insieme ad altra documentazione IP.
Migliori pratiche per la marcatura temporale Git automatizzata
Una volta che l’automazione è in atto, alcune abitudini renderanno più forte il tuo registro di prior art.
Marca temporalmente tutti i repository, inclusi quelli privati. Molti team marcano solo i progetti pubblici. Ma i patent troll e le dispute di lavoro spesso prendono di mira sistemi interni e segreti commerciali. I repository privati contano altrettanto, se non di più.
Tieni i file di prova fuori dal branch sorgente principale. Usa un branch timestamps dedicato o un repository ombra separato. Questo mantiene pulito il tuo branch main dando comunque agli auditor un unico posto dove trovare le ricevute .ots e i file manifest.
Incorpora il badge di verifica nel tuo README. Un badge visibile dice ai potenziali contraffattori che la tua cronologia di commit è ancorata in Bitcoin. Non è solo decorazione; è un deterrente a basso costo.
Usa la Modalità Enterprise ZK dove il codice sorgente deve rimanere interno. Se il tuo team di conformità vieta l’accesso in lettura di terze parti ai repository sorgente, l’approccio con GitHub Action invia solo gli hash dei commit all’API di Timestamp GIT.
Per ambienti air-gapped o self-hosted, usa l’immagine Docker. Timestamp GIT è disponibile come immagine Docker per il controllo completo:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
Avviala con:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
L’applicazione diventa disponibile su http://localhost:8080. Al primo avvio, una procedura guidata di configurazione ti guida nel collegare la tua GitHub App e configurare l’istanza. Una licenza demo a tempo limitato è disponibile dalla pagina Docker License.
Scarica periodicamente i rapporti di audit. Non aspettare che una disputa legale inizi per raccogliere prove. Un’esportazione trimestrale o mensile richiede pochi minuti e ti dà un archivio offline.
FAQ
Come fa la GitHub App a marcare temporalmente automaticamente i miei commit?
Una volta installata, la Timestamp GIT GitHub App monitora il tuo repository per nuovi commit tramite webhook. Ogni notte, raccoglie tutti gli hash dei commit del giorno, crea un albero di Merkle e ancora la radice nella blockchain di Bitcoin usando il protocollo OpenTimestamps. Le prove vengono quindi inviate automaticamente al tuo repository. Non sono richiesti passaggi manuali.
La GitHub App ha accesso al mio codice sorgente?
In Modalità Standard, l’app richiede accesso in sola lettura al repository sorgente per leggere gli hash dei commit, ma non legge né archivia mai il tuo codice sorgente effettivo. Per la massima privacy, la Modalità Enterprise ZK usa una GitHub Action che invia solo l’hash del commit all’API di Timestamp GIT, quindi il tuo codice sorgente non lascia mai il tuo ambiente.
Posso usare Timestamp GIT con repository privati?
Sì. I piani Pro ed Enterprise supportano i repository privati. L’app può archiviare le prove in un repository ombra o in un branch dedicato, e l’accesso agli endpoint di stato è protetto con HMAC per i repository privati.
Come posso verificare che il mio commit sia stato marcato temporalmente?
Puoi verificare tramite la dashboard di stato pubblica, gli endpoint API come /api/statusLast, o scaricando la ricevuta .ots ed eseguendo gli strumenti di verifica OpenTimestamps standard contro la blockchain di Bitcoin. La verifica è indipendente e non si basa sui server di Timestamp GIT.
Conclusione: imposta e dimentica
La marcatura temporale Git automatizzata cambia la domanda da “Mi sono ricordato di marcare temporalmente questo commit?” a “L’ancoraggio notturno sta comparendo nella mia dashboard?”
Timestamp GIT gestisce l’intero protocollo OpenTimestamps dietro le quinte. Installi la GitHub App una volta, colleghi i tuoi repository e lasci che la pipeline notturna ancori gli hash dei commit in Bitcoin. Il risultato è una prova immutabile e pronta per il tribunale di prior art senza una nuova abitudine manuale.
Inizia con il piano gratuito per i repository pubblici, passa a Pro Agency per i repository privati, o usa Enterprise ZK quando il codice sorgente deve rimanere dentro la tua infrastruttura. Chi si self-hosta può distribuire l’immagine Docker per il controllo completo.
Installa la GitHub App oggi su Timestamp GIT e rendi la marcatura temporale qualcosa che i tuoi repository fanno automaticamente.
Post correlati
- How to Prove Your Code Existed on a Specific Date (Without Revealing It)
- Protect Your Startup from Patent Trolls with Git Timestamping
- How Dev Shops Can Prove Work Delivery with Timestamp GIT