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,不知道原因

nginx使用rewrite机制实现缓存

问题起始的需求

为了某个傻傻的想法,将所有的动态的页面变成静态页面。因为图像之类的保存位置也是在 数据库中,因此,这些统统都变成了php的访问请求

碰到的问题症状

进行了问题解决之后,发现图像之类的每次都需要从服务器上下载,这样对服务器的压力比 较大,而这些图片大部分都没有进行过任何更改

解决的思路

通过在服务器上创建一个缓存的文件,如果缓存文件不存在的时候,再请求php执行,在php 执行过程中,顺便将新的文件放置到缓存文件中,这样 下次的下次 的请求的时候,就会 出现文件未修改(服务器返回304),就不需要从服务器上再次下载了。

nginx的配置

if (!-f $latex request_filename) {
  rewrite "^/dev/getfile/(.+)$" /dev/getfile.php?$1& last;
 }

我在getfile.php中将所有允许缓存的文件都放在/dev/getfile目录下,因此,在请求时, 如果缓存文件存在的话,就不调用getfile.php文件,如果不存在的话,则调用getfile.php, 而在getfile.php中,会将不存在的文件重新创建到指定目录下,这样依赖,在 下次 调 用的时候,由于是新文件,则不调用getfile.php文件而重新传输,在 下次的下次 调用 的时候,文件未更改则不用重新传输了。