2013-09-26 157 views
1

我的工作包含的src/目录,我想与大家分享仅此的src/目录一大应用的子目录同步。如何一个Git仓库与另一个仓库

所以,我想这的src/目录定期推到另一个仓库(并保持作了以及包含文件所做的的src/内的变化是,标签和分支)。

到目前为止,我已经做了以下内容:

git clone MyBigProject /tmp/foo 
cd /tmp/foo 

# I want to share the master and 1.0, 1.1, 2.0,... branches 
REMOTE_BRANCHES=`git branch -r | tr -d " " | grep "^origin/[0-9]\.[0-9]$"` 
for BRANCH in $REMOTE_BRANCHES; do 
    # So I need to track them locally in order to rewrite them 
    git checkout --track $BRANCH 
done 

git filter-branch --tree-filter 'rm -rf `ls -1 | grep -v src`' --prune-empty -- --all 

git push MySharedRepo --all 
git push MySharedRepo --tags 

问题是,filter-branch将创建新的提交哈希值,从而推到MySharedRepo带来了很多的冲突。这也意味着它会在每次推送共享存储库时破坏所有用户引用。

我想指出MySharedRepo是一个READ-ONLY存储库。

我一直在寻找过去几天没有找到这个问题的正确解决方案,所以提前感谢,如果你能帮助我解决它!

回答

0

通过filter-branch只共享子目录是正确的路径。理想情况下,如果src目录可以独立存在,则主(父)存储库可以将filter-branch存储库作为子模块而受益。这实现了以下内容:

  1. src内容和父项目提供单独的存储库。
  2. 支持将src作为存储库 (如果在中央存储库上共享,如https://github.com)进行读取/读取+写入访问控制。
  3. 省去了重复git filter-branch努力每次提交上src需要共享
相关问题