【问题标题】:Creating new repositories using mercurial-server使用 mercurial-server 创建新的存储库
【发布时间】:2011-05-04 02:50:53
【问题描述】:

根据http://dev.lshift.net/paul/mercurial-server/docbook.html 的“创建存储库”,我们需要做的就是创建新的存储库——clone 不存在。

但在 1.1 中我不起作用。如果我们看一下代码:

if cmd is None:
    fail("direct logins on the hg account prohibited")
elif cmd.startswith('hg -R ') and cmd.endswith(' serve --stdio'):
    repo = getrepo("read", cmd[6:-14])
    if not os.path.isdir(repo + "/.hg"):
        fail("no such repository %s" % repo)
    dispatch.dispatch(['-R', repo, 'serve', '--stdio'])
elif cmd.startswith('hg init '):
    repo = getrepo("init", cmd[8:])
    if os.path.exists(repo):
        fail("%s exists" % repo)
    d = os.path.dirname(repo)
    if d != "" and not os.path.isdir(d):
        os.makedirs(d)
    dispatch.dispatch(['init', repo])
else:
    fail("illegal command %r" % cmd)

我们可以看到,要创建我们需要专门传递init 命令。

此命令按预期工作:

"TortoisePlink.exe" -ssh -2 hg@mercurial "hg init tst"

但我希望这是一些更优雅的命令。

嗯,这是文档中的“错误”还是我做错了什么?

更新

我的问题只是关于使用mercurial-server 远程创建存储库。

更新 2

这是我的误解,因为我不清楚是否应该已经创建了本地存储库,它将被远程克隆。

【问题讨论】:

  • mercurial-server 不是 Mercurial。它不是 Mercurial 的一部分,也不随 Mercurial 一起提供。它不是由 Mercurial 的作者编写的。
  • @Ry4an:谢谢,船长。所以呢? )) 和2+2 = 4。这个帖子里还有更明显的句子吗?
  • @zerkms 拿着电话...2+2 = 4?
  • 只是说说而已。 #mercurial 频道是大多数 Mercurial 支持发生的地方,它会收到大量没有人能回答的 mercurial 服务器问题,因为没有人使用 mercurial 服务器,并且不知何故它被打包在 ubuntu 上。 Rhodecode 或 hgweb 就是它所在的位置。当以下所有三个答案(包括已删除的答案)都误解了您的问题时,它可能会在清晰度部门留下一些不足之处。
  • 我不认为有贡献受到惩罚,但是如果我创建了一个新项目并将其命名为“Paul Crowley 的 Nifty Software”并且很多人问你如何让它工作你会最终有点恼火。 :)

标签: mercurial mercurial-server


【解决方案1】:

我发现使用 Mercurial-server 创建一个新的 repo 非常简单。假设您有权限并且路径 "/dir1/dir2/" 已经存在于服务器上,只需(使用命令行):

mkdir new
cd new
hg init
hg clone . ssh://hg@server/dir1/dir2/new

干杯,
克里斯托夫。

【讨论】:

  • 没错。不明显(至少对我来说)它应该已经创建本地存储库,我们远程克隆。我认为我们需要做的就是克隆到本地 empty dir new remote repo.
  • "假设路径...已经存在" 实际上,当前版本的 Mercurial-server 允许您克隆到服务器,即使路径还没有之前创建的。这是 Mercurial-server 的一个非常有用的功能...我仍在使用 Git 进行搜索 :)
  • @Kangkan 用于克隆 ssh 和 http 在我的服务器上工作,但对于创建 repo,只有 ssh 对我有用。使用 http(s) 的尝试给了我:abort: cannot create new http repository.
【解决方案2】:

您引用的页面用于共享现有存储库,而不是专门用于创建新的空存储库。您给hg init tst 的命令对于初始化新的空存储库是正确的。我认为关于它的唯一“不优雅”的事情是你正在远程执行它,因此需要提供额外的 ssh 命令。存储库创建命令本身hg init 非常简单。

【讨论】:

  • 请阅读该文档链接中的“创建存储库”部分。它专门用于创建远程存储库;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多