我正在开始一个新的Zend Framework项目,我将与设计师合作。我将使用git来维护这个项目代码,通常设计师不会说git(或任何编程语言)所以我想让他的事情变得简单,否则我恐怕他根本就不会使用git。我的计划是给他一些Git gui,并且他应该只使用基本的git功能,例如commit,diff,fetch,merge,push和pull。
我正在使用gitolite来维护我们的git存储库的共享副本,因为它有一个精细的权限系统,我将只为设计者提供RW访问权限(设计)和对其他分支的读访问权。
为了简单起见,我想与他分享主项目中的一些文件夹(在ZF recommended structure之后),他确实需要访问它才能完成工作。与此同时,我希望我们两个人仍然可以相互合并。
他的分支的结构减少应该是这样的:
<project name>/
application/
layouts/
scripts/
views/
scripts/
public/
css/
images/
js/
我知道我可以使用子模块执行此任务,但维护是一件痛苦的事情,因为我应该将项目拆分到(至少)4子库中,他应该只能访问子库并且他有3个存储库跟...共事。因此,如果这是唯一的解决方案,我会放弃这个想法。
我已经读过的一些链接让我觉得我所要求的是可能的:
以下是我的问题:
design
(git checkout -b design
和git mv/rm
?)git merge design
反之亦然)我找到了另外两种可能解决这两个问题的方法
我尝试在设计分支中实现第一个git rm all-unneeded-stuff
后,在主分支中进行提交,其中涉及白名单路径中的文件和黑名单路径中的另一个文件,但是git merge
失败并显示以下消息
CONFLICT (delete/modify): application/Bootstrap.php deleted in HEAD and modified in master. Version master of application/Bootstrap.php left in tree.
然后我在master分支中添加了一个新目录,当从设计中合并时,添加了新目录。我在驱动程序中添加了一些调试回声,我发现它在两种情况下都没有被调用,可能是因为它不是真正的合并。
我还没有尝试过第二种方法(.gitignore),但是如果我理解这种方法不符合我的需求,因为它只会忽略设计分支中列入黑名单的文件,但会检查它们在设计部门,打破我的要求。
我在GitHub
上推动了我的实验我认为目前没有解决方案。使用当前的git实现,这根本无法实现。
我想要反对,但我担心它不会发生。
答案 0 :(得分:6)