2010-06-11 34 views
6

oturum açmak için tarih işlemek ekleme nasıl svn için "dcommitting" ne zaman adı/tarih günlüğü iletiye eklenen yazar (veya Committer) olması için ne yapmalıdır?Git svn için: mesajlar

Örneğin, Git'te günlük mesajı ise:

This is a nice modif

ben svn mesaj gibi olmasını istiyorum gibi bir şey:

This is a nice modif 
----- 
Author: John Doo <[email protected]> 2010-06-10 12:38:22 
Committer: Nice Guy <[email protected]> 2010-06-10 14:05:42

(Ben esas değilim unutmayın bugüne ilgilenen, çünkü ben zaten .svn-yazarlar svn kullanıcılar)

Herhangi basit bir şekilde eşleştirilmiş? Kanca gerekli mi? Diğer öneri?
(Ayrıca bkz: http://article.gmane.org/gmane.comp.version-control.git/148861)

cevap

-1

Bu sadece günlük çıktı biçimini değiştirmekle mi ilgili? Bunu gerçekleştirmek için

git log --pretty="format:%s %an %ae %cn %d" 
git help log 
+0

Pek. Eğer "git svn dcommit" ne zaman Bu günlüğü yeniden ilgili. –

+0

Anladım. Yanlış anlamadığım için üzgünüm, git-svn ile hiç deneyimim yok. – takeshin

3

bir yolu bir senaryo, GIT_EDITOR ortam değişkeni ve dcommit--edit seçeneğini kullanmaktır.

kaydet bir dosyaya aşağıdaki, hadi svnmessage.sh diyelim: chmod +x svnmessage.sh:

#!/bin/sh 
c=`git rev-parse HEAD` 
t=`git cat-file -t $c` 
m=`cat "$1"` 
if [ "commit" = "$t" ]; then 
    o=`git cat-file $t $c` 
    o_a=`echo "$o" | grep '^author '` 
    o_c=`echo "$o" | grep '^committer '` 
    author=`echo "$o_a" | sed -e 's/^author \(.*>\).*$/\1/'` 
    authorts=`echo "$o_a" | sed -e 's/^author .*> \([0-9]\+\) .*$/\1/'` 
    authordt=`date -d @$authorts +"%Y-%m-%d %H:%M:%S %z"` 
    committer=`echo "$o_c" | sed -e 's/^committer \(.*>\).*$/\1/'` 
    committerts=`echo "$o_c" | sed -e 's/^committer .*> \([0-9]\+\) .*$/\1/'` 
    committerdt=`date -d @$committerts +"%Y-%m-%d %H:%M:%S %z"` 
    m="$m 
----- 
Author: $author $authordt 
Committer: $committer $committerdt" 
fi 
echo "$m" > "$1" 

komut çalıştırılabilir olduğundan emin olun. Ve çalıştırmak senin dcommit gibi:

GIT_EDITOR="/path/to/script/svnmessage.sh" git svn dcommit --edit 

--edit seçenek olacak edit the commit message before committing to SVN taahhüt mesajı işlemek için GIT_EDITOR ortam değişkenini kullanarak. Daha fazla bilgi için bkz. git-svn ve git-var.

Sen, biraz daha kolay hale getirmek için bir takma ad oluşturabilirsiniz:

git config --global alias.dcommit-edit '!GIT_EDITOR="$HOME/bin/svnmessage.sh" git svn dcommit --edit' 

Sonra sadece kullanmak git dcommit-edit.


komut git-svn.perl SVN mesaj taahhüt oluşturmak için git cat-file çıkışını sifonlar nasıl güvenir. Yazar ve gönderen bilgisini çıkarmak için aynı teknik kullanılır. Basit gibi görünebilir taahhüt:

$ git cat-file commit 24aef4f 
tree eba872d9caad7246406f310c926427cfc5e73c8d 
parent 7dd9de9b5c68b9de1fc3b798edbab2e350ae6eac 
author User <[email protected]>54806 -0500 
committer User <[email protected]>54806 -0500 

foo-27 

tipik .git/COMMIT_EDITMSG bir parametre olarak geçirilen olacak komut; içeriği, SVN taahhüt mesajı için kullanılacak Git taahhüt mesajını içerecektir.

+0

Kapsamlı cevabınız için teşekkür ederiz. Kulağa harika geliyor! Ancak, pencereleri çalıştırıyorum ... Windows için de bir örneğiniz var mı? Ek olarak, bu, GIT_EDITOR ortam değişkenini sadece mevcut işlem için değiştirecek mi yoksa tüm diğer işlemler için de kalıcı olarak değiştirilecek mi? –

+0

@DanielHilgarth: Üzgünüm, benim emrinde Windows yok; belki birileri Windows ile bir deneyin ve geri bildirim verebilir.Bir komutla "GIT_EDITOR" (veya herhangi bir ortam değişkeninin) ayarlanması, sadece bu komut için 'GIT_EDITOR' yerine geçer; kalıcı olarak değiştirmez. –

+0

Yorum için teşekkürler. Scriptinizle aynı şeyi yapan küçük bir program yazmak çok zor olmamalı - en azından anladığım kadarıyla :) Senaryoda genel olarak ne yaptığını ve özellikle bu sed komutlarını kısaca açıklayabilir misiniz? Somut bir örnek yararlı olurdu –

İlgili konular