免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4794 | 回复: 1
打印 上一主题 下一主题

这样的项目需求,该用svn,git,还是hg? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-21 15:19 |只看该作者 |倒序浏览
本帖最后由 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后会提示:
  1. git.exe push --progress  "origin" branch0 :branch0

  2. Counting objects: 3, done.
  3. Compressing objects: 100% (2/2)   
  4. Writing objects: 100% (2/2)   
  5. Writing objects: 100% (2/2), 243 bytes, done.
  6. 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
  7. To D:\tmp\gittest\local_master\repos
  8. ! [remote rejected] branch0  -> branch0  (branch is currently checked out)
  9. error: failed to push some refs to 'D:\tmp\gittest\local_master2\repos'
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-04-21 19:10 |只看该作者
我尝试了以下的方法,基本满足我的需求了。但有些步骤觉得不妥,不知道有没有什么隐患,请大家指点一下。
-----------------------------------------------------------------------------
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的属性,很担忧。不知道有没有什么隐患。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP