博文

目前显示的是标签为“repo”的博文

学习GPG

0. 前言 在使用 repo 下载 android 源码和 git 下载 kernel 源码里会使用到 gpg ,那 gpg 是什么?该如何使用?这里说到的 GPG 是 GnuPG ,是 Gnu Privacy Guard 的缩写,它提供钥匙管理、加解密和数字签名等功能,其涉及到非对称加密算法,在学习每一项新技术时都先学会用再去深究其实现,故而我们在这里简说原理后立马学习如何用,品尝非对称加密算法应用下的 GPG 味道。 非对称加密算法使用公钥和密钥两个配对的钥匙,公钥加密,密钥解密,公钥加密后的信息只能由配对的密钥来解密还原信息,而对称加密算法则只有一个钥匙,加解密用同一把很不安全。数字签名一般是在发送的信息后面添加签名(即一堆处理后的字符),该签名是根据发送方的密钥和信息内容进行处理得出,而接收方在收到信息后使用发送方的公钥就可以验证接收到的信息的正确性,确认有没有被篡改过。 我们使用的环境是: Ubuntu13.10 ( 64 位, Kernel : 3.13.6 ) 1. 安装 GPG sudo apt-get install gnupg 一般 Ubuntu 都安装好了。 2. 生成钥匙对 gpg --gen-key 运行该命令后有如下提示内容需确认: Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 这里采用默认的 RSA 就可以,直接回车后有如下内容: RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 这里是配置产生的 KEY 的位数,在 1024 到 4096 之间,我们采用默认的 2048 即可( KEY 的位数越多越安全,但加解密的速度则会越慢),直接回车后有如下内容: Please specify how long the key should be valid. 0 = key does not expire ...

repo操作导致代码消失一例解决方法

    有一次整理了下代码后准备提交,进行了git add和git commit操作后,害怕服务器上的代码又更新了,就repo sync了一下,再git log,发现刚才的commit没有了,之前在repo init时也有使用-m参数指定使用相应的mainfest.xml文件,也使用过repo status查看过相应的branch情况,但最终还是没有相应的commit log信息,头痛啊,一周的工作就要白费了吗?不甘心啊,不停的使用git branch -a和git checkout来切换分支,还是没有相应的提交,不可能所有的分支都没有吧?于是上网查找了下,发现刚才commit时有可能是在(no branch)上进行操作的,使用git reflog就可以查看到刚才的提交信息了,接下来再使用git checkout切换到相应的分支,然后再使用git merge命令将刚才reflog看到的相应commit合并过来,再push下就可以了,总的步骤如下:     git reflog     git checkout ourbranch     git merge commitID     git push     就这样,把我一周的工作找回来了,再进行了一遍repo init和repo sync操作,发现默认是在(no branch)上的,即执行git branch -a时有如下返回:     * (no branch)     remotes/origin/master     remotes/origin/pre-release     remotes/origin/release     remotes/origin/top     终于把问题型清楚了,切记以后使用repo时要切换分支啊,没想到首次使用repo来管理提交代码(以前只是从google上下载android源码而已)就碰到这么严重问题,还好放松后好好想了一下和查查资料,避免一周工作白费,还有一点以后使用新工具时还要记得备份,避免在紧急情况下找不到解...