最近,谷歌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/