我是git的新手,需要一些帮助。 我的计划:
我使用Atlassian Stash,我看到有一种方法可以从debs到www文件夹。 当我在debs目录中更改某些内容时,它会自动将更改推送到www文件夹。 这是真的吗?
我想创建自动执行部件4的脚本.5。和。
最好的方法是什么?
答案 0 :(得分:1)
1)我有debs资料库
我们假设这个网址是git@github.com:user/debs.git
我们正在使用ssh
网址,以便整个拉取过程可以在服务器上自动完成。 ssh-keys
可以git
自行选择username-password
,而https
每次都需要通过git@github.com:user/docs.git
连接提供,而ssh键比密码更容易设置缓存。
这假设您已经设置了ssh密钥。查看bitbucket和github上的这些帖子,也可以这样做。
2)我有文档资料库
我们假设这个网址是www
3)我想从deb到
cd www git clone git@github.com:user/docs.git
文件夹
这应该很简单 - 转到您的www位置并使用git clone创建它的本地副本。
www
FWIW,forking在这里不是正确的术语,它只与在bitbucket,github等上创建从一个用户帐户到另一个用户帐户的repo副本有关。
如果您希望将此克隆命名为www
,即所有代码都放在www/debs
目录中,而不是cd path_to_www_parent
git clone git@github.com:user/docs.git www
目录中,请使用
debs
4)使用修改后的名称和导演添加来自docs资源库的文件
如果您需要每次更改文件名,我建议将debs repo克隆到某个位置,重命名文件,然后移动它们。
否则,如果文件的名称和目录路径与git repo中的相同,则可以直接将文档存储库添加为debs #can be the www folder as well
|_code_file_for_debs_1
|_code_file_for_debs_2
|_code_file_for_debs_3
.
.
|_docs #is a git submodule
存储库中的git submodule,或者拥有它作为其中的subtree。
我建议保持文件名等相同,这样你的git存储库就是代码的工作副本,而不需要对pull等进行任何改动;这样它就可以直接用作子模块,我们不必担心该文件重命名脚本。
5)然后我想从debs文件夹和修改后的docs文件夹合并到www文件夹
我们已经按照上面的步骤处理了这个问题,理想的做法是在你的情况下使用以下结构,而不是手动玩代码。
webserver
6)在
cd www git pull service apache2 graceful #assuming apache is webserver
我想用cron自动提取www文件夹来更新deb存储库
以上述方式添加模块后,简单的git pull将更新它们。 cron作业可以是一个简单的脚本,如下面的
crontab -e
这可以安排为每15分钟一次的工作,例如关注(使用*/15 * * * * sh script.sh
打开crontab)
*/15 * * * * cd www && git pull && service apache2 graceful
或
git add
我使用Atlassian Stash,我发现有一种方法可以将deb从deb转换到www文件夹。当我在debs目录中更改某些内容时,它会自动将更改推送到www文件夹。这是真的吗?
不,什么都不会被自动推送。您需要使用capistrano
添加更改的文件,然后提交它们,然后将它们推送到您的bitbucket / github repo。我们可以在服务器上设置一个裸仓库并开始推送它,但这不会改变上面的任何其他步骤。检查我在另一个question here上的答案,以便更好地了解如何设置裸仓。
<强> PS 强>
虽然此设置应该有效,但您应该调查使用cap
或其他此类工具进行部署,而不是完全依赖cron作业来为您执行相同操作。 git pull
脚本的优点是它们只需要在需要进行部署时运行,因此您的服务器不会浪费cpu周期;您可以同时部署在多个服务器上;您可以轻松解决因{{1}}等失败而导致的问题。