yaoyansi 发表于 2011-04-21 15:19

这样的项目需求,该用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
! branch0-> branch0(branch is currently checked out)
error: failed to push some refs to 'D:\tmp\gittest\local_master2\repos'

yaoyansi 发表于 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. ! 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的属性,很担忧。不知道有没有什么隐患。
页: [1]
查看完整版本: 这样的项目需求,该用svn,git,还是hg?