最近,穀歌Code項目叫停,如果你有開源項目放在它們的服務器上怎麽辦?
穀歌提供一個從Google Code到GitHub的代碼轉移的工具,傳到GitHub一看,一切似乎安然無恙,可是再仔細一看,我的email地址一絲不掛地躺在每個文件旁,被GitHub當作用戶名/作者顯示出來。
這怎麽能行!那些群發垃圾郵件的軟件像蒼蠅一樣專找有縫的蛋,我可不想讓我的email被垃圾郵件充斥。
於是急忙把github的東東運行到本機上,用以下腳本“篡改”穀歌轉過去的文件,把用戶名改成我在GitHub的用戶名,而不是我在Google Code用戶的電郵號碼。
如果你的電腦需要使用代理服務器,先用以下命令設置代理服務器環境:
git config --global http.proxy http://MYPROXY.com:PORT
把代碼從GitHub克隆到本機:
git clone --bare https://github.com/user/repo.git cd repo.git
運行下列腳本“篡改”GitHub用戶名(是我原來Google Code的電子郵件)[1]:
OLD_EMAIL
CORRECT_NAME
CORRECT_EMAIL
12345678910111213141516171819 |
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
|
我花了兩天才搞清楚為什麽用原來的email地址作為OLD_EMAIL就沒辦法“篡改”GitHub用戶名。
原來,需要特別注意的是,這裏的舊email地址不是你原來的email地址,而是加了一些亂碼的這樣一堆東西!
我是怎麽發現這個問題的呢。用GIT的以下命令,終於把Google轉過去的真正email地址給露出來了:
你會發現:
commit 0dbe5f8531a89f62742d2b75716b73b5e791bd46
Author: your-old-email@example.com <your-old-email@example.com@2336f6a0-57fc-8fba-0cea-765dc726c76a>
Date: Sun Nov 11 17:55:17 2012 +0000
Your Comment
你把這個怪物作為OLD_EMAIL放到上麵的腳本,“篡改”才能成功:
your-old-email@example.com@2336f6a0-57fc-8fba-0cea-765dc726c76a
把“篡改”後的代碼傳到GITHUB,大功告成!
__________________________________________________________________________________
注釋:
[1] https://help.github.com/articles/changing-author-info/