http://gitblit.com/federation.html

A Gitblit federation is a mechanism to clone repositories and keep them in sync from one Gitblit instance to another.

Federation can be used

to maintain a mirror of your Gitblit instance,

to aggregate使聚集 repositories from developer workstations,

or to initially clone groups of repositories to developer workstations.

If you are/were a Subversion user you might think of this as svn-sync, but better.

If your Gitblit instance allows federation and it is properly registered with another Gitblit instance, each of the non-excluded repositories of your Gitblit instance can be mirrored, in their entirety, to the pulling Gitblit instance.

You may optionally allow pulling of user accounts and backup of server settings.

The federation feature should be considered a security backdoor and enabled or disabled as appropriate for your installation.
Please review all the documentation to understand how it works and its limitations.

Important Changes to Note

The Gitblit 0.8.0 federation protocol adds retrieval of teams and referenced push scripts. Older clients will not know to request team or push script information.

The Gitblit 0.7.0 federation protocol is incompatible with the 0.6.0 federation protocol because of a change in the way timestamps are formatted.

Gitblit 0.6.0 uses the default google-gson timestamp serializer which generates locally formatted timestamps.

Unfortunately, this creates problems for distributed repositories and distributed developers.

Gitblit 0.7.0 corrects this error by serializing dates to the iso8601 standard.

As a result 0.7.0 is not compatible with 0.6.0.

A partial backwards-compatibility fallback was considered but it would only work one direction and since the federation mechanism is bidirectional it was not implemented.

Origin Gitblit Instance Requirements

  • git.enableGitServlet must be true, all Git clone and pull requests are handled through Gitblit's JGit servlet
  • federation.passphrase must be non-empty
  • The Gitblit origin instance must be http/https accessible by the pulling Gitblit instance.
    That may require configuring port-forwarding on your router and/or opening ports on your firewall.

federation.passphrase(用来生成共享的token,并非将它提供给其他人[区分大小写])

The passphrase is used to generate permission tokens that can be shared with other Gitblit instances.

The passphrase value never needs to be shared, although if you give another Gitblit instance the ALL federation token then your passphrase will be transferred/backed-up along with all other server settings.

This value can be anything you want: an integer, a sentence, an haiku俳句, etc.

You should probably keep the passphrase simple and use standard Latin characters to prevent Java properties file encoding errors.

The tokens generated from this value are affected by case, so consider this value CASE-SENSITIVE.

The federation feature is completely disabled if your passphrase value is empty.

NOTE:
Changing your federation.passphrase will break any registrations you have established with other Gitblit instances.

Pulling Gitblit Instance Requirements

  • consider setting federation.allowProposals=true to facilitate使容易 the registration process from origin Gitblit instances
  • properly registered Gitblit instance including, at a minimum, url, federation token, and update frequency

Controlling What Gets Pulled  [需要将源Gitblit的url和token提供给pulling的Gitblit,token可以在日志以及webui中找到]

If you want your repositories (and optionally users accounts and settings) to be pulled by another Gitblit instance,

you need to register your origin Gitblit instance with a pulling Gitblit instance by providing the url of your Gitblit instance and a federation token.

Gitblit generates the following standard federation tokens:

String allToken = SHA1(passphrase + "-ALL");
String usersAndRepositoriesToken = SHA1(passphrase + "-USERS_AND_REPOSITORIES");
String repositoriesToken = SHA1(passphrase + "-REPOSITORIES");

The ALL token allows another Gitblit instance to pull all your repositories, user accounts, server settings, and referenced push scripts.
The USERS_AND_REPOSITORIES token allows another Gitblit instance to pull all your repositories and user accounts.
The REPOSITORIES token only allows pulling of the repositories.

Individual Gitblit repository configurations such as description and accessRestriction are always mirrored.

If federation.passphrase has a non-empty value,

the federation tokens

are displayed in the log file

and are visible, to administrators, in the web ui.

在日志里可以找到

2017-05-20 16:21:09 [INFO ] Federation ALL token = 519c5f7dedfd8a5d52845e2e3ddfbbeab1343f03
2017-05-20 16:21:09 [INFO ] Federation USERS_AND_REPOSITORIES token = 30ff1e40ced5f48d33a9f4336f6d4b1d482b4420
2017-05-20 16:21:09 [INFO ] Federation REPOSITORIES token = 7ab4adcc149a3785d36cfaddafb6b24ae1956d61

The three standard tokens grant access to ALL your non-excluded repositories.

However, if you only want to specify different groups of repositories to be federated then you need to define federation sets.

Federation Sets

Federation Sets (*federation.sets*) are named groups of repositories.

The Federation Sets are defined in gitblit.properties and are available for selection in the repository settings page.

You can assign a repository to one or more sets and then distribute the federation token for the set.

This allows you to grant federation pull access to a subset of your available repositories.

Tokens for federation sets only grant pull access for the member repositories.

Gitblit的编辑界面,有一个是针对federation的

# Federation pull registrations
# Registrations are read once, at startup.
#
# RESTART REQUIRED
#
# frequency:
# The shortest frequency allowed is every 5 minutes
# Decimal frequency values are cast to integers
# Frequency values may be specified in mins, hours, or days
# Values that can not be parsed or are unspecified default to *federation.defaultFrequency*
#
# folder:
# if unspecified, the folder is *git.repositoriesFolder*
# if specified, the folder is relative to *git.repositoriesFolder*
#
# bare:
# if true, each repository will be created as a *bare* repository and will not
# have a working directory.
#
# if false, each repository will be created as a normal repository suitable
# for local work.
#
# mirror:
# if true, each repository HEAD is reset to *origin/master* after each pull.
# The repository will be flagged *isFrozen* after the initial clone.
#
# if false, each repository HEAD will point to the FETCH_HEAD of the initial
# clone from the origin until pushed to or otherwise manipulated.
#
# mergeAccounts:
# if true, remote accounts and their permissions are merged into your
# users.properties file
#
# notifyOnError:
# if true and the mail configuration is properly set, administrators will be
# notified by email of pull failures
#
# include and exclude:
# Space-delimited list of repositories to include or exclude from pull
# may be * wildcard to include or exclude all
# may use fuzzy match (e.g. org.eclipse.*)

#
# (Nearly) Perfect Mirror example
#

#federation.example1.url = https://go.gitblit.com
#federation.example1.token = 6f3b8a24bf970f17289b234284c94f43eb42f0e4
#federation.example1.frequency = 120 mins
#federation.example1.folder =
#federation.example1.bare = true
#federation.example1.mirror = true
#federation.example1.mergeAccounts = true

Federation Proposals (Origin Gitblit Instance)

Once you have properly setup your passphrase and can see your federation tokens, you are ready to share them with a pulling Gitblit instance.

The registration process can be partially automated by sending a federation proposal to the pulling Gitblit instance.
To send a proposal:

  1. Login to your Gitblit instance as an administrator
  2. Select and click the propose link for the appropriate token on the federation page
  3. Confirm the publicly accessible url of your (origin) Gitblit instance
  4. Enter the url of the pulling Gitblit instance you want to federate with
  5. Optionally enter a message for the administrators
  6. Click propose

Not all Gitblit instances accept federation proposals, there is a setting which allows Gitblit to outright reject them. In this case an email or instant message to the administrator of the other Gitblit instance is required. :)

If your proposal is accepted, the proposal is cached to disk on the pulling Gitblit server and, if properly configured, the administrators of that Gitblit server will receive an email notification of your proposal.

Your proposal includes:

  1. the url of your Gitblit instance
  2. the federation token you selected and its type
  3. the list of your non-excluded repositories, and their configuration details, that you propose to share

Submitting a proposal does not automatically register your server with the pulling Gitblit instance.
Registration is a manual process for an administrator.

总结:

第一步:在origin的Gitblit中设置git.enableGitServlet=true;【默认为true】

并且federation.passphrase设置为非空的值;【默认是空】

同时确保打开了http/https

第二步:federation.allowProposals=true

Gitblit从一个服务器,迁移到另外一个服务器的更多相关文章

  1. ORACLE 从一个实例迁移到另外一个实例实战记录

    .schema1到schema2的迁移 Oracle 从一个用户expdp导出再impdp导入到还有一个用户,能够使用REMAP_SCHEMA=user1:user2来实现: 假设想导入的用户已经存在 ...

  2. 如何将App从一个账号迁移到另一个账号?

    App迁移(App transfer):将App从一个开发者账号迁移至另一个开发者账号.此文演示了整个迁移过程,为了方便解释,在此过程中,将App转出的开发者账号我们下文将会称之为A账号,接收杭州Ap ...

  3. github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器

    一. github仓库迁移到gitlab 先进入 new project: 选择 Import project, 选择下面的github: 进入后,这里需要github的 personal acces ...

  4. 在linux上使用"scp"命令拷贝一个目录到另一台服务器的时候报"not a regular file"错误的解决办法

    今天在linux命令行使用scp命令拷贝一个目录到另一台服务器的时候,报如下错误: [root@hadoop01 ~]# scp flume -r hadoop02:/root/apps flume: ...

  5. NodeJS服务器:一行代码 = 一个的HTTP服务器

    从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务. 前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器. 先看一幅图: ...

  6. Xshell利用登录脚本从服务器登录到另外一个服务器

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  7. 搭建CAS服务器,并实现一个简单的单点登录的demo

    官网:http://jasig.github.io/cas/Cas Server下载:http://developer.jasig.org/cas/Cas Client下载:http://develo ...

  8. Nginx系列2:用Nginx搭建一个可用的静态资源Web服务器

    上一节中编译好自己的nginx服务器后, 现在要对nginx.conf文件进行配置,搭建一个可用的静态资源Web服务器 1.放入可访问的html文件到nginx文件夹下,如图1所示: 这里我放入的是一 ...

  9. [傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目

    网络上关于flask部署Centos的教程有挺多,不过也很杂乱. 在我第一次将flask上传到centos服务器中遇到了不少问题,也费了挺大的劲. 在参考了一些教程,并综合了几个教程之后才将flask ...

  10. django搭建一个小型的服务器运维网站-查看服务器中的日志与前端的datatable的利用

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

随机推荐

  1. 浏览器解析,HTTP/HTTPS、TCP/IP、WebSocket协议

    浏览器相关 浏览器对同一个域名有连接数限制,大部分是 6. 浏览器指的是 Chrome.Firefox,而浏览器内核则是 Blink.Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则 ...

  2. pandas 4 处理缺失数据nan

    from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...

  3. [转] 经典排序算法 - 基数排序Radix sort

    原理类似桶排序,这里总是需要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数 例如 待排序数组[62,14,59,88,16]简单点五个数字 分 ...

  4. Yocto tips (15): Yocto中的包管理器

    使用包管理器 在local.conf中使能就可以: 然后编译后就会有rpm包了: 配置文件server 能够使用ngix和apache.可是我们也能够仅仅用使用python: python -m Si ...

  5. 图像切割—基于图的图像切割(Graph-Based Image Segmentation)

     图像切割-基于图的图像切割(Graph-Based Image Segmentation) Reference: Efficient Graph-Based Image Segmentation ...

  6. [Servlet&JSP] HttpSession会话管理

    我们能够将会话期间必须共享的资料保存在HttpSession中,使之成为属性.假设用户关掉浏览器接受Cookie的功能.HttpSession也能够改用URL重写的方式继续其会话管理功能. HttpS ...

  7. linux程序设计——个人总结

    linux程序设计--个人总结 到今天为止,<linux程序设计>学习基本完毕了.从五月下旬開始接触linux,学习安装Ubuntu14.04,六月份開始学习<linux程序设计&g ...

  8. 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

    Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...

  9. 智课雅思词汇---十、pend是什么意思

    智课雅思词汇---十.pend是什么意思 一.总结 一句话总结:[词根含义]:悬挂,垂;称量;支付 词根:-pend-, -pens- [词根含义]:悬挂,垂;称量;支付 [词根来源]:来源于拉丁语动 ...

  10. Linux系统下安装redis

    Linux 下安装 下载地址:http://redis.io/download,下载最新文档版本. 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wget http://download ...