使用Git发布到S3?

时间:2011-08-11 19:32:06

标签: git amazon-s3

有谁知道怎么做?到目前为止,我还没有通过谷歌找到任何有用的东西。

我真的想设置一个本地仓库并使用git push将其发布到S3,这个想法是对资产进行本地版本控制,但是在S3上进行远程存储。

可以这样做,如果是,怎么做?

8 个答案:

答案 0 :(得分:49)

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

2 使用FUSE-based file system backed by Amazon S3

  1. 获取Amazon S3帐户!

  2. 下载,编译和安装。 (参见InstallationNotes)

  3. 指定您的安全凭证(访问密钥ID和秘密访问权限) 键)通过以下方法之一:

    • 使用passwd_file命令行选项

    • 设置AWSACCESSKEYID和AWSSECRETACCESSKEY环境变量

    • 在主目录中使用.passwd-s3fs文件

    • 使用系统范围的/ etc / passwd-s3fs文件

    • 这样做

  4. /usr/bin/s3fs mybucket /mnt
    

    就是这样!您的亚马逊水桶“mybucket”的内容现在应该可以在/ mnt中读取/写入

答案 1 :(得分:10)

蒲公英是另一个CLI工具,它将使Git存储库与S3 / FTP / SFTP保持同步: http://github.com/scttnlsn/dandelion

答案 2 :(得分:8)

git-s3 - https://github.com/schickling/git-s3

您只需运行git-s3 deploy

即可

它带来了git repo和uploades /删除所有优点,只是你改变的文件。
注意:部署不是通过git push隐式的,但你可以通过git hook实现。

答案 3 :(得分:2)

你可以使用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
  • 替换为您的访问/密钥
  • 默认情况下,mc使用亚马逊S3的签名版本4。
  • mys3是minio客户端的Amazon S3别名

将您的github本地存储库/目录镜像名称mygithub 映射到amazon S3存储桶名称mygithubbkp

$ ./mc mirror mygithub mys3/mygithubbkp

希望它有所帮助 免责声明:我为Minio

工作

答案 4 :(得分:1)

您可以使用deplybot(http://deploybot.com/)服务,该服务免费用于单个git存储库。

您可以通过选择"自动"来自动部署。在部署模式部分。

我现在正在使用它。它非常简单实用。

答案 5 :(得分:0)

版本使用Github控制您的文件?此脚本(及其关联的GitHub / AWS配置)将对您的存储库进行新的提交,并将它们同步到您的S3存储桶中。

https://github.com/nytlabs/github-s3-deploy

答案 6 :(得分:0)

您需要JGit

只需使用aws凭据将.jgit文件保存在用户目录中,就可以将git与s3一起使用。

以下是您的git网址的样子。

amazon-s3://.jgit@mybucket/myproject.git

您可以使用git执行jgit所做的一切。

在此处获取完整的设置指南。

https://metamug.com/article/jgit-host-git-repository-on-s3.php

答案 7 :(得分:0)

您还可以使用AWS CLI和Git(带有挂钩)执行此操作。经过验证可在Windows 10上运行。应该在Linux / Mac上运行。

在提交时将设置同步到S3

  1. 安装AWS CLI
  2. 设置IAM编程访问凭据(您可以限制为S3,甚至可以限制为存储桶)。
  3. 使用凭证配置AWS CLI
  4. 在AWS控制台或CLI中创建S3存储桶。
  5. 确保存储桶是私有的。
  6. 为您现有的git项目制作一个新的bare git repo:
mkdir myproject.git
cd myproject.git
git init --bare

注意:使用裸仓库将作为上游,而裸仓库仅       拥有要上传到S3存储桶的更改,并且不会被忽略       文件,本地git配置等。

  1. 将此钩子作为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/
    
  2. 使用正确的S3存储桶名称更新该钩子。
  3. 现在将cd放入您的myproject目录中,并将裸仓库添加为上游,例如将其命名为s3
git remote add s3 path/to/bare/directory/myproject.git 

注意:您可以使用相对路径作为裸目录的路径。

测试

  1. 将更改添加到您的存储库中并提交。
  2. 要将更改同步到S3存储桶时,将更改推送到s3上游。
  3. 您应该会看到更改已同步到您指定的S3存储桶,也可以 查看S3存储桶中的更改以验证一切正常。

参考: