我的Lion机器上有这个应用程序,它位于mercurial存储库中,所以我使用hg-git将其部署到heroku。
~/.hgrc
[extensions]
hgext.bookmarks =
hggit =
/项目/.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机器上也非常适用,具有类似的设置。
原来这与这个问题有关。我以前没有注意到多余的斜线。我应用了一个类似于这个家伙的补丁,它对我有效(在最新的hg、hggit和osx上)。
如何安装补丁的完整细节:
-
首先卸载它
sudo easy_install -m 'hg-git'
-
然后删除~/Library/Python/2.7/site-packages 中的hg git egg文件
-
作为目录安装
sudo easy_install -Z 'hg-git'
-
open~/Library/Python/2.7/site packages/hg_git…./hggit/git_handler.py
-
手动应用补丁(我的更像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:
您的git远程格式被破坏了。
在.git/config中,确保您的遥控器采用以下格式:
git@heroku.com:appname.git
其中appname
是您在Heroku 上的应用程序名称