我们在企业环境中有一个svn存储库结构,如下所示:
root
libs
shared_lib1
shared_lib2
private_lib
public_code
private_code
Run Code Online (Sandbox Code Playgroud)
其中public_code是一个外部存储库,它是开源的,公司外部的人员具有读写访问权限.shared_lib1和shared_lib2也是与另一家公司的不同程序员组共享的外部存储库.我是维护者,基本上可以做任何技术上最好的,外部用户必须适应.
我现在想知道从这个结构转移到mercurial存储库的最佳方法是什么.
1)我可以使用mercurial子存储库来密切模拟旧的设置.或者
2)我可以为我们制作一个大型仓库,为外部合作伙伴创建三个新的小型独立存储库(基本上是分支项目),并在大型和独立的交换机之间交换变更集.
使用svn中的setup 1),分支是一场噩梦,因为当我分支root时,策略总是必须分支public_code,shared_lib1和shared_lib2.为此,我必须调用svn分支四次并手动修改svn:externals属性三次.我可以轻松地将主仓库分支到mercurial并自动获取所有子仓库的新分支吗?
当我设置2)时,repos之间的文件系统会有所不同.例如,我将在repo"root"中使用public_code/Makefile,但该文件将只是repo"public_code"中的"Makefile".Mercurial仍然能够同步回购之间的变化吗?工作流程怎么样?
我想为mercurial创建一个.NET客户端.没什么好看的,只是基本的东西.
所以我决定,如果我得到一些源代码控制解决方案,以保证我的努力工作安全,并帮助根除版本之间的错误,这可能是最好的.
我对SVN很熟悉,只要检查一下这些东西,但我有关于事情的承诺方面的NFI.
什么是良好的源代码控制解决方案,请记住我在Windows上的Visual Studio中开发?我应该获得托管解决方案,还是自己在我自己的服务器上托管(运行Windows Server '03)
有人知道为什么hg status
在Windows客户端上第一次从命令行调用时速度很慢(3-10秒)(我假设它在之后被缓存).
hg status
是一个本地操作,它不应该花那么长时间,特别是空的回购.
在具有多个更改的活动存储库和没有文件的全新存储库中都是这种情况.因此,回购的大小似乎不是性能的一个因素.谢谢!
显然,Mercurial会为每个更改分配一个全局变更集ID.他们如何确保这是独一无二的?
这是目前可通过扩展或本机功能实现的吗?
谢谢,
布兰登
我正在开发一个托管在Bitbucket上的项目.我还想在连接到本地Intranet的办公室服务器上安装相同的项目,这样当我在我的系统上提交时,我可以推送到两个存储库(Bitbucket和我的本地服务器).
如果互联网不可用,整个设置应该是用户可以在本地版本上进行协作,当它可用时,他们可以更新在线版本.
在我的机器上,Emacs在创建缓冲区时需要一个长文件:打开文件或目录时,或启动时M-x shell
.暂停是10-15秒,真的很烦人.
当我打开大约150多个缓冲区(大多数是我的机器上的文件和目录;有~5 cmd支持的shell缓冲区;没有远程文件)时,似乎会出现此问题.
我运行了全局自动恢复模式,但即使关闭它,问题仍然存在.
我有这个东西,发现在StackOverflow的某个地方.emacs
,但它没有帮助:
(setq w32-get-true-file-attributes nil)
Run Code Online (Sandbox Code Playgroud)
我的环境:Emacs 23.2.1,Windows 7.您对我可以尝试的内容有什么建议吗?
我很高兴使用HgSubversion一段时间,今天我忘了添加--svn
到rebase命令.现在我得到了可怕的未知版本''
有没有办法从中恢复?
我一直在使用Git,我想把我常用的工作流转换为Mercurial.特别是,我有兴趣转换我将用于贡献给Git项目的工作流程,以便能够为Mercurial项目做出贡献.
通常,对于GitHub上的项目,我会从原始项目中将项目分配到GibHub上,然后使用两个不同的远程名称在本地获取:
# Clone the initial repository and call the remote repository 'github-origin'
git clone -o github-origin git://github.com/orig_author/project.git
# Add the forked GitHub repo as an additional remote repo ('github-mine')
cd project
git remote add github-mine git://github.com/me/project.git
git fetch github-mine
Run Code Online (Sandbox Code Playgroud)
当我列出分支时git branch -a
,我得到这样的东西:
* master
remotes/github-mine/some_feature
remotes/github-mine/master
remotes/github-origin/HEAD -> github-origin/master
remotes/github-origin/some_feature
remotes/github-origin/master
Run Code Online (Sandbox Code Playgroud)
我可以创建自己的本地分支git checkout -b new_feature
,然后将其推回到我的GitHub存储库,从而添加两个引用:
* my_feature
remotes/github-mine/my_feature
Run Code Online (Sandbox Code Playgroud)
然后我可以联系原作者讨论这个功能,提交拉取请求等等.所有这些工作流程实际上都独立于原作者的工作时间线.这使得在不规范主项目存储库的情况下讨论实验性功能变得非常容易.
如果原作者提交了更多更改,我可以跟上git fetch github-orig
并可能相应地合并或修改我的本地更改.作为快速测试(假设当前分支是my_feature
):
git fetch github-origin
git checkout -b temp
git rebase …
Run Code Online (Sandbox Code Playgroud)