我正在考虑在Ubuntu服务器上创build一个git服务。 然而,我和另外一个程序员的运作方式 – 我们真的想要一个人坚持一个人在一个项目上工作。
我将如何做一个Bash脚本来创build一个签入和签出与GIT? 我们希望阻止任何人检入尚未签入的代码,并且应该检出签出代码的人的姓名。
编辑:我不是真的有兴趣使用它的梦幻般的差异function的Git。 我移动100英里每小时,没有时间与其他开发者玩差异游戏。 这就是我们使用Git的原因。 如果其他开发者想玩差异游戏,他们仍然可以这样做。 但是当我检查出某些东西的时候,我希望它locking在每个人身上,直到我再次检查它为止。
但是当我检查出某些东西的时候,我希望它locking在每个人身上,直到我再次检查它为止。
Errr …对不起,这不是一个DVCS(D是“分布式”)的工作原理。
一个/你不“结帐”一个文件(就像你在ClearCase例如)。 你刚开始修改它,Git会检测到这个变化是一个候选索引( git add )和提交( git commit ,“检查”部分)
b /当你“结帐”(即修改)或检查一个文件时,其他开发者及其关联的其他开发者不知道任何有关的信息。
你“locking”每个人都无法访问你的回购和修改你的文件。
但是,当你发布(即推动这些变化), 那么你需要解决任何并发的修改。 在DVCS中,没有能够检测到并发变化和/或logging“locking”的中央参考。
这不是gitdevise的工作方式。 也就是说,这不是典型的git工作stream程。 如果你真的想要这个工作stream程,可以考虑使用基于SubVersion这种工作stream程的东西。 如果其他人需要该文件,locking的文件会生成通知,但您拥有文件:
http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.locking
我不知道如果git-svnserver网关支持locking,但它可能。 如果是这样,那么你可以拥有两全其美。
然而,Git非常灵活。 如果你想expression的话,它会支持。 Git允许您在使用文件时盲目地擦除其他人可能发生的变化。 每次你想推到主存储库只是做:
git pull --strategy ours ; git push
不需要该合并function。
这对命令会将您的更改推送到服务器,而忽略其他人自上次同步以来所做的任何更改。
另一个选项是“git pull –strategy recursive -Xours”。
是否与其他程序员进行沟通? 对于一个小团队来说,这几乎肯定是一个比依靠locking更好的方法。
如果你坚持locking,Git的分布式模型并不适合。 而不是Git你应该看看使用一个集中的版本控制系统,如SVN。 这使您可以locking存储库中的文件。 当他/她尝试提交回购时,您的程序员会收到警告。
你真的不需要这个。 Git和其他好的源代码控制系统可以很好地处理合并,您不需要在结帐时locking文件。 相反,确保你们都经常提交,并定期向上游推送更改。
至于编写一个bash脚本来签出,你总是可以像其他任何东西一样编写一个bash脚本……就像你的一系列命令可以在命令行上运行它们,但是你不需要这个。 你只需要一个命令来更新你的本地仓库,一个命令提交,一个命令推上游。 你会先学习git,然后当你发现一个单调乏味的任务时,再考虑脚本。