这样的项目需求,该用svn,git,还是hg?
本帖最后由 yaoyansi 于 2011-04-21 15:21 编辑
Hi, 大家好
问题的背景是这样的
1.A是一个github上的开源项目ReposA,使用git做代码管理。
2.我现在要基于A开发一个项目B,
a)B基于A的r0版本的代码(记为Ar0)开发,
b)B需要改A的源代码(A的这些被改动的代码文件记为AM)
c)A现在也在不断更新,假设今后某一天A的版本r1(代码记为Ar1).B需要将Ar1(相对于Ar0的)增加的代码,更新到B里。
d)同时B还有我自己写的新代码文件(这些文件记为BM)
e)暂时不能把B提交到A的代码库里,只能在本地建立我的代码服务器S和代码库ReposB,也就是说AM和BM不能提交到ReposA里。
f)可以肯定的是BM需要提交到ReposB里。
3.我对svn比较熟,搭建过svn服务器(win/linux);对于git,hg只用过客户端(仅限于checkout),
4.开发环境是windows
问题如下:
1)该用svn,git,还是hg?如何管理?
2)AM应该提交到哪里?
3)有没有什么其他好的建议?
谢谢
------------------------------------------------------------
今天在学习git,使用TortoiseGit做了如下测试,同时也遇到一些问题:
测试步骤如下:
1.在本地d:\gittest\webserver\repos\建立代码,建立分支branch0 (模拟ReposA)
2.在本地d:\gittest\localserver\repos\建立上述webserver的clone,
3.开发者user0 在d:\gittest\user0\repos\下clone localserver,在branch0做开发,比如,增加一个文件user0_file0.txt
4.开发者user1 在d:\gittest\user1\repos\下clone localserver,在branch0做开发,比如,增加一个文件user1_file0.txt
现在的问题是,如何把user0_file0.txt,user1_file0.txt 更新到d:\gittest\localserver\repos\下。
我在d:\gittest\user0\repos\下选择“TortoiseGit”->push,点击OK后会提示:
- git.exe push --progress "origin" branch0 :branch0
- Counting objects: 3, done.
- Compressing objects: 100% (2/2)
- Writing objects: 100% (2/2)
- Writing objects: 100% (2/2), 243 bytes, done.
- remote: error: its current branch; however, this is not recommended unless youository to allow pushing intoch' configuration variable toinconsistentnch in a non-bare remote: remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.ep the default behaviour, set
- To D:\tmp\gittest\local_master\repos
- ! [remote rejected] branch0 -> branch0 (branch is currently checked out)
- error: failed to push some refs to 'D:\tmp\gittest\local_master2\repos'
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我尝试了以下的方法,基本满足我的需求了。但有些步骤觉得不妥,不知道有没有什么隐患,请大家指点一下。
-----------------------------------------------------------------------------
1.如何保持d:\gittest\user0\和d:\gittest\user1\下代码的同步:
1) D:\tmp\gittest\local_master2\test0>git config --bool core.bare true
2)d:\gittest\user0\repos\下有更改后,在目录d:\gittest\user0\repos\点击右键,选择“Git Sync”,先点击“Pull”,再点击“Push”
3)d:\gittest\user1\repos\下有更改后,在目录d:\gittest\user1\repos\点击右键,选择“Git Sync”,先点击“Pull”,再点击“Push”
我觉得不妥之处和可能存在的问题:
1.虽然使得d:\gittest\user0\和d:\gittest\user1\下代码的同步了,但是它们的更改(比如增减文件)在d:\gittest\localserver\repos\目录下看不到(即使切换到相同的branch)
2.如果没有步骤1的话,步骤2和3里的Push时会提示楼上的那个错误:
1. git.exe push --progress "origin" branch0 :branch0
2.
3. Counting objects: 3, done.
4. Compressing objects: 100% (2/2)
5. Writing objects: 100% (2/2)
6. Writing objects: 100% (2/2), 243 bytes, done.
7. remote: error: its current branch; however, this is not recommended unless youository to allow pushing intoch' configuration variable toinconsistentnch in a non-bare remote: remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.ep the default behaviour, set
8. To D:\tmp\gittest\local_master\repos
9. ! [remote rejected] branch0 -> branch0 (branch is currently checked out)
10. error: failed to push some refs to 'D:\tmp\gittest\local_master2\repos'
-----------------------------------------------------------------------------
2.如何保持d:\gittest\webserver\repos\和d:\gittest\localserver\repos\下代码的同步:
1) D:\tmp\gittest\local_master2\test0>git config --bool core.bare false
2)在d:\gittest\localserver\repos\目录下,点击右键,选择“Git Sync”,先点击“Pull”,
我对反复设置core.bare的属性,很担忧。不知道有没有什么隐患。