在Web服务器上使用Stash进行分叉并从另一个存储库添加文件

时间:2014-03-27 15:41:19

标签: git repository deb bitbucket-server

我是git的新手,需要一些帮助。 我的计划:

  1. 我有debs存储库
  2. 我有docs repository
  3. 我想从debs到www文件夹的分叉
  4. 使用修改后的名称和directorys从文档存储库添加文件
  5. 然后我想从debs文件夹和修改过的docs文件夹合并到www文件夹
  6. 在网络服务器中,我想用cron自动提取www文件夹以更新deb存储库
  7. 我使用Atlassian Stash,我看到有一种方法可以从debs到www文件夹。 当我在debs目录中更改某些内容时,它会自动将更改推送到www文件夹。 这是真的吗?

    我想创建自动执行部件4的脚本.5。和。

    最好的方法是什么?

1 个答案:

答案 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密钥。查看bitbucketgithub上的这些帖子,也可以这样做。

  

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}}等失败而导致的问题。

相关问题