快速搭建android源代码镜像

android.googlesource.com 很不错

直接访问可以看到仓库中各个的版本及源代码提交记录,直接提供和网址相同的clone地址,我在自己的服务器上做了个镜像仓库,但我不真的不想每次都通过ssh来访问,通过ssh访问意味这我要向别人提供密钥文件

所以,我搭建了个快速的工程,地址在https://github.com/zeze0556/docker_gitiles

在说明中已经写了最重要的内容。

对我而言,只用修改gitiles.config 中关于访问的域名和docker-compose.yml中的仓库路径为本地镜像的路径即可。

使用的是nginx+git的http服务,不支持提交推送,这个对于共享镜像而言是件好事,毕竟镜像随时都可能更新,一提交就乱了。

如果要像google一样工作的话,添加个gerrit,gitlab等等其他的版本管理作为后端服务会更好

emacs配置magit管理git项目

我决定使用magit而不是外部的工具或者命令行来管理git项目。我每天基本上都会将emacs 一直开着,但提交,添加等等的时候都是切换到命令行或者使用tortoisegit来进行后续操 作,感觉很不方便,看到很多人推荐magit,就决定试一试。试用下来,果然强大。下面是 我的简单配置:

(add-to-list 'load-path (concat  emacs-config-dir "plugin/magit"))
(add-to-list 'load-path (concat  emacs-config-dir "plugin/git-modes"))
(defun magit-escape-for-shell (str)
    (if (or (string= str "git")
        (string-match "^--" str))
          str
        (concat "'" (replace-regexp-in-string "'" "'\\''" str) "'")))
(require 'magit)
(defun my-git-commit-hook ()
  (auto-fill-mode)
  (set-buffer-file-coding-system 'utf-8-unix))
(add-hook 'magit-mode-hook 'my-git-commit-hook)
(add-hook 'magit-status-mode-hook 'my-git-commit-hook)
(defun my-git-commit-signoff-hook ()
  (auto-fill-mode)
  (git-commit-signoff)
  (set-buffer-file-coding-system 'utf-8-unix))
(add-hook 'git-commit-mode-hook 'my-git-commit-signoff-hook)

;平台路径相关配置,下面是指定git命令路径的
;(setq magit-git-executable "C:/Program Files/Git/bin/git.exe")
; 下面这行是放在我的.emacs文件中,所有自己用的emacs的配置都放在一个特定的文件夹中,这样便于管理
;(setq emacs-config-dir "~/emacs_config/")

上述代码的两个hook,第二个只比第一个多了个git-commit-signoff,因为我想在每次提交 的时候都添加上 酷酷 的 Signed-off-by,如果不想添加的话,可以只使用一个。

关于编码的问题,因为我大部分的配置都是utf-8编码,而在windows上总是乱码,于是指定 编码了。但在打开magit-status的时候还是乱码,不过在提交了之后,magit-status自动刷 新后,却又变成正常的了。不擅长lisp,不知道原因

emacs使用magit提交到gerrit

从好几年前我就开始一直使用git了,大部分的提交是在命令行下,反
正emacs的shell功能很好用,也从来没有想过安装插件什么的。

我也在用gerrit管理项目,大部分的时候,项目的.git/config的文件
里面都有这样的一段:

      [remote "origin"]
	url = xxxxx
	fetch = +refs/heads/*:refs/remotes/origin/*
	puttykeyfile = 
	push = HEAD:refs/for/master
       

关键是那个push, 可以让我在命令行下直接git push就push到了
refs/for/master分支上了,方便很多。

突然想在emacs中使用下版本管理,我可从来没用过呢。于是查看了下,
magit评价不错,就直接安装配置了下,具体可从https://github.com/magit/magit
看如何安装使用。

但安装完之后发现push的时候默认push的分支是
master:refs/heads/master,没发现特别的需要设置的地方(可能是我没仔
细看),如果不能push到refs/for/master的话,对我而言几乎毫无用途啊。
于是就直接修改下源代码了:

       magit.el | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/magit.el b/magit.el
index ae51473..89a6ad1 100644
--- a/magit.el
+++ b/magit.el
@@ -5422,9 +5422,11 @@ even if `magit-set-upstream-on-push's value is `refuse'."
                                         (eq magit-set-upstream-on-push 'askifnotset)))
                                (yes-or-no-p "Set upstream while pushing? "))))))
             (apply 'magit-run-git-async "push" "-v" push-remote
-                   (if ref-branch
-                       (format "%s:%s" branch ref-branch)
-                     branch)
+                   (cond ((magit-get "remote" push-remote "push")
+                          (magit-get "remote" push-remote "push"))
+                         (t (if ref-branch
+                                (format "%s:%s" branch ref-branch)
+                              branch))) 
                    (if set-upstream-on-push
                        (cons "--set-upstream" magit-custom-options)
                      magit-custom-options))
 
       

修改丑陋,能用就行,反正我对lisp基本上不懂。我的修改可从https://github.com/zeze0556/magit检出。

这样依赖,如果在config中配置了push的相关内容(比如文章一开始的
那个配置格式),就会push到指定的分支上,如果没有配置的话,按照默认
的来。

然后到了gerrit的页面一看,乖乖,中文怎么乱码了,看了下模式,是
在git-commit-mode下,然后编码居然是undeced-xxx的,虽然可以通过在
写完日志之后: C-x ret c utf-8-unix Alt-x git-commit-commit来操作,
但明显太烦人了,不过,幸好这个支持hook,于是就在配置中写下下面的
hookl:

      (defun my-git-commit-hook ()
  (auto-fill-mode)
 (flyspell-mode)
  (set-buffer-file-coding-system 'utf-8-unix))
(add-hook 'git-commit-mode-hook 'my-git-commit-hook)
       

这下子就默认以utf-8-unix的编码提交了,乱码什么的通通散去。

PS: 最近在尝试使用emacs的evil插件,现在稍微习惯些了,vim的快速
移动果然不是盖的,不过总在中文输入法什么的和快捷键上卡壳,有些时
候会和emacs的习惯冲突,慢慢锻炼吧。

gerrit使用mysql数据库及中文提交

以下内容无效,虽然可以解决subject乱码的问题,但在自动补全的部分,会引起内部错误。目前我已经放弃了mysql做后台数据库,改为h2数据库,所有的中文都不再成为问题。

很早之前使用gerrit的时候,发现中文提交的日志会显示成”??”,但在
详细的Change中却显示正常,一直以为是gerrit的问题,但之前也仅仅是
随便测试下,主要是没有专用的服务器。现在准备将所有的都转到gerrit
中,这个问题不解决不行了。

今天尝试解决这个问题,先查gerrit的代码,查change, 查patchset,
查到了mysql数据库上,但我对mysql数据库不熟悉,专门装了个
phpmyadmin去看数据存储,发现这个数据是存在mysql数据库中的。

但mysql数据库中的是乱码!!!!,问题的原因找到了,就想办法解
决。首先将changes表的结构subject项的编码修改为utf8-bin,我是通过
phpmyadmin修改的,不太清楚mysql下如何操作最方便,然后上传还是乱码。

如果传输的数据连接编码本身是错误的。。。。有这个可能,找一找在
gerrit中如何设置连接的编码吧,我在
gerrit-server\src\main\java\com\google\gerrit\server\schema中找到
了mysql的连接,在url中添加下编码,觉得这样子太傻了,不够灵活。就
看下gerrit的配置帮助吧,这里直接给结果吧:

继续阅读gerrit使用mysql数据库及中文提交