这样的项目需求,该用svn,git,还是hg?

发布于 2022-10-15 08:56:56 字数 2171 浏览 22 评论 0

本帖最后由 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'

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染年凉城似染瑾 2022-10-22 08:56:56

我尝试了以下的方法,基本满足我的需求了。但有些步骤觉得不妥,不知道有没有什么隐患,请大家指点一下。
-----------------------------------------------------------------------------
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的属性,很担忧。不知道有没有什么隐患。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文