http://www.cnblogs.com/xl19862005/archive/2011/06/28/2092464.html
上文原文
如果你有一个现成的git仓库,想放到 gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基础仓库),怎么办呢。
首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。
$ git clone –bare ~/kernel /media/udisk
然后就拿着优盘,交给gitserver的管理员,让他拷贝到/home/repo/下,同时需要配置 gitosis相关配置文件哦,这个就不用再说了吧。比如:下载ALSA库:
git clone git://android.git.kernel.org/platform/external/alsa-lib.git
git clone git://android.git.kernel.org/platform/external/alsa-utils.git
生成bare库
git clone –bare alsa-lib alsa-lib.git
git clone –bare alsa-utils alsa-utils.git
将bare 库移动到git服务器目录
cp alsa-lib.git /home/repo
注意变更所有者,以获取提交权限。
chown -R git alsa-lib.git
然后就O 了,呵呵.
但是会出现以下错误
Initialized empty Git repository in /home/norton/work/test/test/box_client/.git/
fatal: 'repositories/box_client.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
总结:发现ServerA创建的纯仓库拿到ServerB中,是不能被Clone下来的。但是本地的纯仓库是可以的,如ServerB Clone下ServerA后,创建纯仓库B,放到gitosis仓库中,是可以被下载的。
做法1:我从a server中clone下一个库,我自己在这基础上修改过了,然后在此基础上产生一个纯仓库,copy到自己server的版本仓库中,想从client端直接copy这个新版本。暂时发现这是不行的。
但是,我在服务器,把client端的代码clone下来后,再创建一个服务器版的纯仓库,同样的仓库是可以被其它client clone下来的。
方法2:在ServerB中clone ServerA的项目,然后在ServerB中push本地仓库
在clone下来的项目中,执行如下步骤:
su 先切换为管理员权限
git remote add local /home/repo/test.git 新建一个远程branch,指向本地仓库
git push local master 执行push操作就完成了