有谁知道如何做到这一点?到目前为止,我还无法通过Google找到任何有用的信息。
我真的很想设置本地存储库并将git push
其发布到S3,其想法是对资产进行本地版本控制,但在S3上进行远程存储。
可以做到吗?如果可以,怎么做?
有谁知道如何做到这一点?到目前为止,我还无法通过Google找到任何有用的信息。
我真的很想设置本地存储库并将git push
其发布到S3,其想法是对资产进行本地版本控制,但在S3上进行远程存储。
可以做到吗?如果可以,怎么做?
Answers:
1 通过http://blog.spearce.org/2008/07/using-jgit-to-publish-on-amazon-s3.html使用JGit
下载jgit.sh,将其重命名为jgit并将其放在您的路径中(例如$ HOME / bin)。
设置.jgit配置文件并添加以下内容(替换您的AWS密钥):
$ vim〜/ .jgit
accesskey: aws access key
secretkey: aws secret access key
注意,通过在.jgit文件中不指定acl:public,S3上的git文件将是私有的(这就是我们想要的)。接下来,创建一个S3存储桶以将您的存储库存储在其中,我们将其称为git-repos,然后创建一个git存储库进行上传:
s3cmd mb s3://git-repos
mkdir chef-recipes
cd chef-recipes
git init
touch README
git add README
git commit README
git remote add origin amazon-s3://.jgit@git-repos/chef-recipes.git
在上面,我使用s3cmd命令行工具创建存储桶,但是您也可以通过Amazon Web界面来完成存储桶。现在,将其推至S3(注意,当我们与S3交互时,如何使用jgit,否则与标准git一起使用):
jgit push origin master
现在转到其他地方(例如cd / tmp)并尝试克隆它:
jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git
当需要更新它时(因为jgit不支持合并或拉取),您需要执行以下两个步骤:
cd chef-recipes
jgit fetch
git merge origin/master
获取一个Amazon S3帐户!
下载,编译和安装。(请参阅安装说明)
通过以下方法之一指定安全凭证(访问密钥ID和秘密访问密钥):
使用passwd_file命令行选项
设置AWSACCESSKEYID和AWSSECRETACCESSKEY环境变量
在主目录中使用.passwd-s3fs文件
使用系统范围的/ etc / passwd-s3fs文件
做这个
。
/usr/bin/s3fs mybucket /mnt
而已!您的亚马逊存储区“ mybucket”的内容现在应该可以在/ mnt中进行读取/写入
The request signature we calculated does not match the signature you provided. Check your key and signing method
尝试执行时出现错误jgit push origin master
。知道我该如何解决吗?
post-receive
签出的钩子将其进一步向前移动GIT_WORK_TREE
。有关更多详细信息,请参见此处。我最终使它与可以很好地协同工作s3fs
。强烈推荐,感谢您帮助我入门。
Dandelion是另一个CLI工具,它将使Git存储库与S3 / FTP / SFTP保持同步:http : //github.com/scttnlsn/dandelion
git-s3 - https://github.com/schickling/git-s3
你只需要跑步 git-s3 deploy
它具有git repo的所有优点,并且仅上传/删除您已更改的文件。
注意:部署不是通过git push隐式实现的,但是您可以通过git hook来实现。
Composer
,而这又取决于PHP
。
您可以使用mc aka Minio client,它是用Golang编写的,可以在开源Apache许可下获得。它适用于Mac,Linux,Windows,FreeBsd。您可以使用mc mirror
命令来实现您的要求。
mc GNU / Linux下载
64-bit Intel from https://dl.minio.io/client/mc/release/linux-amd64/mc
32-bit Intel from https://dl.minio.io/client/mc/release/linux-386/mc
32-bit ARM from https://dl.minio.io/client/mc/release/linux-arm/mc
$ chmod +x mc
$ ./mc --help
为Amazon S3配置MC
$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
将您的github本地存储库/目录说名称镜像mygithub
到Amazon S3存储桶名称mygithubbkp
$ ./mc mirror mygithub mys3/mygithubbkp
您也可以使用AWS CLI和Git(带有挂钩)来执行此操作。经过验证可在Windows 10上运行。应在Linux / Mac上运行。
bare
为您现有的git项目制作一个新的git repo:mkdir myproject.git
cd myproject.git
git init --bare
注意:使用裸仓库将作为上游,裸仓库将仅具有您要上载到S3存储桶的更改,而不会忽略文件,本地git配置等。
post-update
到hooks
裸myproject.git
目录中。
#!/bin/sh; C:/Program\ Files/Git/usr/bin/sh.exe
# Sync the contents of the bare repo to an S3 bucket.
aws s3 sync . s3://myproject/
myproject
目录,并将裸仓库添加为上游,s3
例如将其命名为:git remote add s3 path/to/bare/directory/myproject.git
注意:您可以使用相对路径作为裸目录的路径。
s3
同步到S3存储桶时,将更改推送到上游。您可以使用deplybot(http://deploybot.com/)服务,该服务对于单个git存储库是免费的。
您可以通过在部署模式部分中选择“自动”来自动化部署。
我正在使用它。这是非常容易和有用的。
版本控制您的文件与Github?该脚本(及其关联的GitHub / AWS配置)将对您的存储库进行新的提交,并将它们同步到您的S3存储桶中。
只需使用aws凭据将.jgit文件保存在用户目录中,即可将git与s3一起使用。
这是您的git网址的样子。
amazon-s3://.jgit@mybucket/myproject.git
你可以做你做的一切git
有jgit
。
在此处获取完整的设置指南。
https://metamug.com/article/jgit-host-git-repository-on-s3.html
s3fs
这是一个可行的解决方案。