同步github工程gitcafe

github固然好。仅仅是国内訪问有点慢。

为了提高博客訪问速度我决定把github上托管的博客同步到gitcafe上。最好能在DNS那里做CDN,可是貌似没有免费的服务。那直接指向gitcafe好了。反正没有什么国外訪问的需求。

简单记一下过程。

gitcafe自己有导入的功能。可是貌似不是非常好用。

并且不够智能。所以我们先建立一个跟username一样的文件夹。

gitcafe仅仅同意这样的方式的Html页面生成。并且仅仅渲染gitcafe-pages分支。

我们改动source分支.git/config增加

[remote "cafe"]
  url = git@gitcafe.com:xxx/xxx.git
  fetch = +refs/heads/*:refs/remotes/cafe/*

因为

[branch "source"]
  remote = origin
  merge = refs/heads/source

所以当前source分支(这以下我没有master)默认提交到origin(github),所以我们通过

git push cafe

提交source,会被扩展成:

git push cafe source:source "当前分支

然后提交deploy。这是渲染之后的html页面,前面那个是octopress的源代码。改动deploy/.git/config

[remote "cafe"]
  url = git@gitcafe.com:chenxiaohui/chenxiaohui.git
  fetch = +refs/heads/*:refs/remotes/cafe/*

然后提交:

git push cafe master:gitcafe-pages

本地分支名字和远程分支不同的时候不能省略,否则会被自己主动扩展成同样的名字。

这就是问题了。我们多了一个master分支….

依照gitcafe的教程删除master未果。只是顺便把默认分支改成了gitcafe-pages。删除master分支的时候,里面有一段说明:

为什么要删除 master 分支
当你在创建一个新的仓库的时候没有指定分支的话。Git 会默认创建 master 分支并指定它为默认分支。

普通情况下使用 master 分支作为整个项目的核心分支是非常普遍的行为, Pages 服务之所以使用 gitcafe-pages 分支的方式差别项目文件和 Pages 文件。 这样你就能够在一个仓库中保存他们并且彼此不会有不论什么影响。 可是像是个人主页类的 Pages 服务或其它一些应用场合,可能并不须要 master 的存在, 甚至必须要删除它。或者仅仅是你有洁癖┑( ̄Д  ̄)┍ 那么你就须要例如以下的方法来删除 master 分支。

(#‵′)靠,就是这样。

最后改动一下Rakefile

...
    system "git push origin #{deploy_branch}"
    system "git push cafe #{deploy_branch}:gitcafe-pages"
    puts "\n## Github Pages deploy complete"
  end
...

  puts "\n## Pushing source"
  system "git push origin "
  system "git push cafe"
  puts "\n## Github source pushed"

当然问题是同一个本地分支track了两个远程分支,可是默认值仅仅能配置一个:

[branch "master"]
    remote = cafe
    merge = refs/heads/gitcafe-pages

这说明master分支上更新gitcafe必须指明repository。好在我们直接用git push/pull不带不论什么參数的时候不多。同一时候假设git pull的话。默认的merge两个repository是不同的,好在我们也一般不用从两个repository上面pull。

顺便去挂一下域名就好了。

矮马。快多了。

原文链接:http://cxh.me/2014/06/28/gitsync-github-gitcafe/

版权声明:本文博客原创文章。博客,未经同意,不得转载。

posted @ 2015-07-12 15:51  lcchuguo  阅读(331)  评论(0编辑  收藏  举报