git... modificare l'owner di un commit

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

git... modificare l'owner di un commit

Messaggio da ZeroUno »

A volte scrivo del codice e lo faccio da diversi pc, allora per stare sincronizzato faccio un repository git.

Puntualmente però mi accorgo (spesso troppo tardi) che i vari pc potrebbero non avere le stesse impostazioni utente/email.

Così ogni tanto trovo dei commit fatti da
"no name" <root@hostname1>
"mio nome" <mail@valida>
"nome mio" <valida@mail>
"username" <username@hostname2>
"apache" <apache@hostname3>

insomma un casino.

Intanto devo imparare che quando do git init devo anche mettere le configurazioni utente/email a livello locale invece che globale per sicurezza, perchè per alcuni repository potrei usare una mail e per altri altre mail, ma dove non l'ho fatto mi ritrovo ormai commit incasinati.

E' possibile con qualche comando git modificare l'owner di un commit passato?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
paolo86
Linux 0.x
Linux 0.x
Messaggi: 73
Iscritto il: lun 14 lug 2008, 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: git... modificare l'owner di un commit

Messaggio da paolo86 »

È successo anche a me da poco... stesso identico problema.. pc diversi e diversa configurazione :|

Alla fine ho risolto con un piccolo script.

Codice: Seleziona tutto

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_EMAIL" = "mail_sbagliata@localhost" ];
        then
                GIT_COMMITTER_NAME="...";
                GIT_AUTHOR_NAME="...";
                GIT_COMMITTER_EMAIL="nuova_mail@corretta.com";
                GIT_AUTHOR_EMAIL="nuova_mail@corretta.com";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD
Puoi sostituire la condizione usando le variabili che più preferisci per discriminare le modifiche oppure aggiungere vari elif in stile bash se hai varie condizioni

L'ho lanciato dalla root del progetto (senza modifiche non inviate o non commitate) con "bash ../git_filter.sh" (avevo lo script nella directory superiore), poi ho dato "git push -f" in modo da forzare l'aggiornamento sul server (non fare pull altrimenti genera un altro ramo nell'albero delle commit, mantenendo anche quello vecchio)
Dopo però ho dovuto rifare il clone dei sorgenti su tutti i pc. Non so se è colpa di questo comando o delle altre prove che stavo facendo con git rebase (e che avevo pure pushato... :( )

Spero di esserti stato utile

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: git... modificare l'owner di un commit

Messaggio da ZeroUno »

Utilissimo, dopo me lo studio bene.

Ma questo mantiene le date dei commit?
L'hash invece mi sa che cambia vero?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
paolo86
Linux 0.x
Linux 0.x
Messaggi: 73
Iscritto il: lun 14 lug 2008, 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: git... modificare l'owner di un commit

Messaggio da paolo86 »

Da me sia le date che gli hash sono rimasti come prima

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: git... modificare l'owner di un commit

Messaggio da ZeroUno »

ok grazie, domani applico.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi