Dai uno sguardo alla tua directory .git
. Potrebbero esserci molti file ma rientrano in un numero abbastanza piccolo di gruppi regolari (dati di archivio oggetti, riferimenti, diagrammi, ecc.). Puoi separare i contenuti in due categorie principali: dati che Git potrebbe normalmente trasportare in altri repository e dati che Git normalmente non trasporterà in altri repository.
Normalmente non trasportati:
HEAD
, FETCH_HEAD
, ORIG_HEAD
, MERGE_HEAD
config
description
hooks/
index
info/
- vari
logs/
- reflogs
normalmente trasportati (ad esempiovia cloni, recupera, spinge, e bundle):
objects/
packed-refs
refs/
Questo ultimo gruppo costituisce il negozio oggetto ei suoi punti di ingresso pubblicati. Ovviamente dovrete rivedere il contenuto della versione stessa per determinare se c'è qualcosa di sensibile in esso.
I HEAD, lo index
(non presente in un repository nudo) e i riferimenti (logs/
) sono tutti punti di ingresso aggiuntivi nell'archivio oggetti. Se hai effettuato una riscrittura della cronologia (ad esempio, hai recentemente cancellato alcuni file di configurazione sensibili dalla cronologia registrata), dovrai prestare particolare attenzione ai reflog (probabilmente non abilitati sulla maggior parte dei repository) e gli arbitri/originali/porzioni degli arbitri namespace.
FETCH_HEAD
e config
potrebbero avere gli indirizzi dei repository Git correlati.
config
potrebbe avere altre informazioni sensibili.
info/
ha vari bit di informazioni; alcuni potrebbero essere sensibili (informazioni/alternative); alcuni hanno meno probabilità di essere sensibili (assumendo che il contenuto stesso sia "pulito" -info/refs, info/packs); alcuni potrebbero essere importanti per il funzionamento del repository (info/grafts). Gli eventuali strumenti aggiuntivi che stavi utilizzando (script di hook, interfacce Web, ecc.) Potrebbero memorizzare dati qui; alcuni possono essere sensibili (liste di controllo di accesso, ecc.).
Se c'è qualcosa attivo in hooks/
, è necessario valutare se è necessario fornire la copia del repository (controllare anche se memorizza eventuali dati aggiuntivi in qualsiasi punto del repository).
Il file description
è probabilmente innocuo, ma si potrebbe anche controllare.
Se sei solo consegnare a mano il contenuto, allora probabilmente si dovrebbe semplicemente clonare un repository fresca nudo o utilizzare un fascio (git bundle come VonC describes).
Se si è responsabili della distribuzione del contenuto e del processo utilizzato per gestirlo, è necessario esaminare singolarmente ciascun bit del repository.
In generale (o in modo più “paranoico”), ci sono molti posti all'interno della gerarchia di un repository Git dove qualcuno potrebbe archiviare qualsiasi file casuale. Se vuoi essere sicuro di dare solo i dati di cui Git ha bisogno, dovresti usare un clone o un pacchetto. Se è necessario fornire alcuni dei dati "per repository" (ad esempio un gancio utilizzato per gestire il repository), è necessario clonare su un nuovo repository (utilizzare un URL file:
per evitare la copia e il collegamento fisso di file di archivio oggetti esistenti) e reinstallare solo i ganci/dati necessari per adempiere ai tuoi obblighi.
Giusto! Il file '.git/config' può essere sensibile. +1 – VonC