我有一个使用git进行版本控制的项目.
我想要做的是在我的(支持ssh的)GoDaddy共享主机软件包上设置一个repo,这样我就可以通过推送进行部署,而不是在FTP中进行拖放.
任何提示将不胜感激.最好是来自已经完成它的人的帐户,但我个人无法在网上找到任何帐户.
jot*_*otr 10
通过一点点工作,我能够在GoDaddy帐户上运行Git.在我的博客上有一篇较长的帖子详细说明了这个过程,但简短的回答是:
检查您的存储库,使用-u指示路径 git-upload-pack
%git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git
调整你的本地仓库配置,使其指向正确的路径git-upload-pack和
git-receive-pack:
%git config remote.origin.receivepack libexec/git-core/git-receive-pack
%git config remote.origin.uploadpack libexec/git-core/git-upload-pack
由于博客不再可访问,这里是从archive.org提取的完整帖子:
此博客托管在廉价的GoDaddy帐户上.最近通过SSH进行shell访问时,我认为安装本地git存储库会很有趣.这不是微不足道的,但我终于让它发挥作用了.我是这样做的:
您想创建一个公钥,以便您可以轻松地通过SSH连接到GoDaddy帐户.如果您还没有密钥对,请创建密钥对,然后将其添加到密钥对~/.ssh/authorized_keys.我将假设一个~/.ssh/config类似这样的条目:
Host mysite
HostName mygodaddysite.com
User mylogin
Run Code Online (Sandbox Code Playgroud)
在我的GoDaddy主机上闲逛之后,我发现它运行的是CentOS 5.2.在我的笔记本电脑上运行的二进制文件不兼容,所以我使用VirtualBox设置本地Centos 5.2安装并构建Git.我正在共享一个包含预构建的CentOS 5.2 Git二进制文件的tarball .您应该能够使用以下命令下载和安装:
wget http://johntrammell.com/centos5.2-git.tar.gz
tar xzf centos5.2-git.tar.gz
Run Code Online (Sandbox Code Playgroud)
享受这一部分 - 我在这里为您节省了几个小时的工作.
将以下内容添加到.bash_profile:
export EDITOR=vim
export PATH=$PATH:$HOME/bin:$HOME/libexec/git-core
export LD_LIBRARY_PATH=$HOME/lib
export GIT_EXEC_PATH=~/libexec/git-core
export GIT_TEMPLATE_DIR=~/share/git-core/templates
Run Code Online (Sandbox Code Playgroud)
这将在交互式shell上正确设置您的环境.不幸的是,我似乎无法为非交互式SSH命令正确设置PATH.例如,当我从笔记本电脑运行此命令时:
ssh mysite env
Run Code Online (Sandbox Code Playgroud)
我看到默认的PATH.当我在.bashrc中设置路径时也是这种情况.我没有确切地追踪SSH在非交互式访问上的作用,但这可能与sshd中的PermitUserEnvironment设置有关.幸运的是我们可以解决这个问题.
登录GoDaddy帐户,创建一个简单的"裸"Git存储库:
% mkdir myrepo
% cd myrepo
% touch README
% git init
% git add README
% git commit -m 'empty git repository'
% cd ..
% git clone --bare myrepo myrepo.git
Run Code Online (Sandbox Code Playgroud)
您现在在~/myrepo.git/GoDaddy帐户的根目录中有一个裸存储库.
唯一棘手的部分是你必须告诉git在哪里可以找到git-upload-pack.这解决了上面提到的PATH问题.在本地计算机上,执行以下操作:
git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git
Run Code Online (Sandbox Code Playgroud)
您现在应该检出原始最小存储库的副本.
可悲的是,我们没有做到:
% cd myrepo
% echo "foo" > README
% git commit -am 'updated'
[master 044c086] updated
1 files changed, 1 insertions(+), 0 deletions(-)
% git push
bash: git-receive-pack: command not found
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
我们的PATH问题现在正在干扰推送操作.作为一种解决方法,我们可以在命令行上指定-receive-pack,也可以在本地配置中设置它(同样适用于获取操作和-upload-pack):
% git config remote.origin.receivepack libexec/git-core/git-receive-pack
% git config remote.origin.uploadpack libexec/git-core/git-upload-pack
Run Code Online (Sandbox Code Playgroud)
恭喜你,你应该立即开始运行!
首先,您需要在 GoDaddy 上安装 git。我不确定这是否可能。Git 支持本地用户安装,但您需要方便地拥有某些开发工具才能完成此操作。下载 git,看看是否可以./configure && make && make install——如果可以,它会将其放入您的~/bin目录中。
我们广泛使用 git 来控制生产。但我可以建议您 ssh 到盒子并执行一个操作,而不是推送部署吗git pull?
更具体地说,创建一个“Release”分支,然后当您准备好部署时,只需将更改合并到 Release 分支中,通过 ssh 连接到服务器,然后 git pull 即可。
例如
ssh user@godaddyhost.com
cd /path/to/project
#ok, assuming you are on the Release branch
git fetch
git merge branch-with-new-changes-on-it
# update the remote Release branch with the merge
git push origin HEAD
Run Code Online (Sandbox Code Playgroud)
这个简单的工作流程使开发人员可以随时准确地查看生产服务器上的内容,并在请求部署之前将其他更改合并到他们的更改中。事实上,我们要求在请求部署分支之前完全合并所有生产更改。
--
如果您确实在 GoDaddy 上安装了 git,并且您确实希望在推送时自动部署,那么请查看该post-update钩子。
http://git-scm.com/docs/githooks
--
如果您无法在 GoDaddy 上安装 git,请查看它们是否支持 rsync。然后你可以在某个地方有一个简单的 bash 脚本
--
有很多方法可以做到这一点。也许这会对方向有所帮助......
| 归档时间: |
|
| 查看次数: |
31067 次 |
| 最近记录: |