1

我在我的 Lion 机器上有这个应用程序,它位于一个 mercurial 存储库中,所以我使用 hg-git 将它部署到 heroku。

~/.hgrc

[extensions]
hgext.bookmarks =
hggit =

.../project/.hg/hgrc

[paths]
default = https://validhgrepo.com

[alias]
push-heroku  = push git+ssh://git@heroku.com:appname.git

然后当我运行 hg push-heroku 它应该部署,但我得到:

caseys-MacBook-Air:project casey$ hg push-heroku
pushing to git+ssh://git@heroku.com:appname.git/
creating and sending data
["git-receive-pack 'appname.git/'"]

 !  Invalid path.
 !  Syntax is: git@heroku.com:<app>.git where <app> is your app's name.

abort: git remote error: The remote server unexpectedly closed the connection.

这没有任何意义。我觉得错误消息具有误导性,因为该存储库确实存在。

这在我的具有类似设置的 ubuntu 机器上也很完美。

4

2 回答 2

2

原来这与这个问题有关。我之前没有注意到多余的斜线。我应用了一个类似于这个的补丁,它对我有用(在最新的 hg、hg-git 和 osx 上)。

有关如何安装补丁的完整详细信息:

  1. 首先卸载它

    sudo easy_install -m 'hg-git'
    
  2. 然后删除 ~/Library/Python/2.7/site-packages 中的 hg-git egg 文件

  3. 安装为目录

     sudo easy_install -Z 'hg-git'
    
  4. 打开 ~/Library/Python/2.7/site-packages/hg_git..../hggit/git_handler.py

  5. 手动应用补丁(我的更像第 1118 行)

    --- git_handler.py  Thu Jul 28 22:05:45 2011
    +++ patched.git_handler.py  Thu Jul 28 22:11:44 2011
    @@ -1066,6 +1066,8 @@
    
                    port = None
                    host, path = hostpath.split(hostpath_seper, 1)
    +               if (host.find('heroku') > 0):
    +                    path = path.rstrip('/')
                    if hostpath_seper == '/':
                    transportpath = '/' + path
                    else:
    
于 2012-02-23T07:13:05.353 回答
-2

你的 git 远程格式搞砸了。

在 .git/config 中确保您的遥控器采用以下格式:

git@heroku.com:appname.git

appname您在 Heroku 上的应用程序名称在哪里

于 2012-02-22T09:29:13.923 回答