2011-09-08 10 views
7

So che è possibile utilizzareassociare un git vuoto impegnarsi con i file

git commit --allow-empty 

a mettere un commit senza modifiche effettive dei file nel repository.

Il problema che ho è che devo essere in grado di creare tali commit vuoti che sono associati con vari file nel repository. In altre parole, io voglio essere in grado di mettere in alcuni commit vuoti per i quali

git log -- <filename> 

visualizzerà il commit, ma non riesco a trovare un modo per fare questo.

Grazie!

+5

Non è un commit vuoto per definizione non correlato a nessun file? Cosa stai cercando di fare esattamente? –

+0

@Jeff: A cosa serve fare un commit vuoto? –

+0

@Carl Sto provando a fare un commit vuoto relativo a file specifici. – Jeff

risposta

7

Da git log --help:

[--] <path>... 
    Show only commits that affect any of the specified paths. 

Si desidera git log <path>... di mostrare un commit che fa non influenzano i percorsi specificati. Non succederà.

Ciò che è possibile fare, tuttavia, è inserire i nomi file nel messaggio di commit e quindi utilizzare git log --grep=<filename>.

Forse non lo vuoi nel messaggio di commit? Quindi inseriscila nelle note di commit: git notes add -m <filename>. Potrebbe essere necessario scrivere un piccolo script per grep per le note, ma il git plumbing dovrebbe renderlo abbastanza facile.

+0

Non sto chiedendo il comportamento di 'git log' da modificare: voglio che mostri i percorsi interessati. Quello che sto cercando è un modo per dire a git di considerare il percorso X un percorso affetto per un commit vuoto. – Jeff

+1

@Jeff: @drizzd e Carl Norum sono abbastanza corretti - un commit vuoto (in questo senso) * per definizione * non introduce modifiche, quindi non ci sono "percorsi interessati". Non c'è modo di fare quello che vuoi senza cambiare il comportamento di 'git log'. –

+0

Non sono sicuro del perché tu stia menzionando anche 'git log', ma come ho detto, non sto chiedendo di cambiare il suo comportamento. Quello che speravo era un modo per dire a 'git commit' di marcare determinati percorsi come interessati, anche se il diff è nullo.Quindi tutti gli altri sottocomandi 'git' farebbero la cosa giusta in termini di visualizzazione dei percorsi interessati, incluso' git log'. – Jeff

5

Il motivo per cui questo non può essere fatto è che per git, un commit è un'istantanea dello stato di tutti i file nel progetto a quel punto, e i file interessati sono più tardi dedotti confrontando un commit al suo genitore. (I file interessati sono solo quei file che differiscono tra i due.) Quindi non c'è modo di contrassegnare artificialmente un percorso come interessato, perché un commit non memorizza direttamente tali informazioni direttamente.

Una cosa che si potrebbe fare è cambiare i permessi dei file (diciamo, impostare o disabilitare la scrittura di gruppo) sui percorsi in questione - che verrebbero acquisiti come una modifica, anche se il contenuto del file è lo stesso. E potresti sempre avere due commit adiacenti - uno che modifica i permessi e l'altro per cambiarli di nuovo - se non vuoi che le autorizzazioni rimangano alterate. È un po 'complicato, ma funzionerebbe, specialmente se i permessi dei file non sono importanti nel tuo caso.

Problemi correlati