読者です 読者をやめる 読者になる 読者になる

(非公式) GitKrakenを日本語化してみた

Git GitKraken

成果物

github.com

適用方法

以下のREADME-ja.mdにも書きましたが、パッチの適用は自己責任でお願いします
GitKrakenの動作がおかしくなったり、起動しなくなったりしても責任は負いません
動作がおかしくなった場合に備え、バックアップを必ず取ってください

https://github.com/megos/gitkraken-i18n/blob/master/README-ja.md

日本語化にあたって

gitのコマンドはできる限り訳さないようにしました。
現場で日本語化されたTortoiseGitを使っている人のヘルプをすることがあるのですが、gitのコマンドが日本語に訳されていて、実際のコマンドとの対応がわかりにくいという問題がありました。
今回はこれを避けるため、GitKraken ←→ CUIとの行き来が簡単にできるように気をつけました。

スクリーンショット

  • コンテキストメニュー f:id:tmegos:20170320160208p:plain

  • マージ時の向き(直訳したらよくわからなくなったので、矢印で視覚的にわかるようにしました)
    f:id:tmegos:20170320160334p:plain

SubGitでGitLabにSubversionの歴史を持ってくる

git Subversion GitLab SubGit

基本的には以下のドキュメントを読んで実行すればOK
importの場合もmirrorのドキュメントの方法を取ればbranchesなどの設定ができます。
(その場合は最後にuninstallの実行が必要)

subgit.com

手順

  1. GitLabでプロジェクトを作成
  2. gitユーザで先程作ったプロジェクトのリポジトリがあるディレクトリに移動
    $ cd /var/opt/gitlab/git-data/repositories/GitLabのグループ
  3. subgitのconfigureコマンドを実行
    $ subgit configure [svnのURL] [gitのbareリポジトリのパス]
  4. configファイルを修正(subgit/config)
    configファイルはgitリポジトリのsubgit/configにあります
    trunkやbranchesのパスが特殊な場合はここで修正します
  5. passwdファイルを修正(subgit/passwd)
    gitからsubversionに同期をとるためのSubversionの設定ファイルです
    passwdファイルの先頭のユーザ情報を使って初回importが行われるようです
    そのため、先頭ユーザはimportするSubversionリポジトリのトップの読み込み権限が必要です
  6. authors.txtファイルを修正(subgit/authors.txt)
    Subversionのコミットユーザとgit(GitLab)のユーザをひもづけるためのファイルです
  7. subgitのinstallコマンドを実行
    $ subgit install [gitのbareリポジトリのパス]
  8. (ライセンスキーがある場合)ライセンスキーをインストール
    root権限で行うことに注意する
    # subgit register --key [ライセンスキーのパス] [gitのbareリポジトリのパス]
  9. (importのみの場合)subgitをアンインストール
    $ subgit uninstall [gitのbareリポジトリのパス]

ファイル設定例

  • author.txt
svnUser = Git User <user@example.com>
hoge = hoge hoge <hoge@example.com>
  • passwd
    • Subversionのパスワードを平文で入力する必要があります(セキュリティ的に問題がありますが…)
svnUserName svnUserPassword
hoge hogepassword
[svn]
        trunk = trunk:refs/heads/svn/master
        branches = branches/*:refs/heads/svn/*
        tags = tags/*:refs/tags/svn/*

実行例

ユーザの確認

$ whoami
git

1.ディレクトリがあるパスまで移動

$ cd /var/opt/gitlab/git-data/repositories/

3.subgit configureを実行

$ subgit configure http://hoge/svn/svnrepo/ gitrepo.git
SubGit version 3.2.4 ('Bobique') build #3670

Configuring writable Git mirror of remote Subversion repository:
    Subversion repository URL : http://hoge/svn/svnrepo
    Git repository location   : gitrepo.git

Git repository is served by GitLab, hooks will be installed into 'custom_hooks' directory.

CONFIGURATION SUCCESSFUL

To complete SubGit installation do the following:

1) Adjust Subversion to Git branches mapping if necessary:
    /var/opt/gitlab/git-data/repositories/hoge/gitrepo.git/subgit/config
2) Define at least one Subversion credentials in default SubGit passwd file at:
    /var/opt/gitlab/git-data/repositories/hoge/gitrepo.git/subgit/passwd
   OR configure SSH or SSL credentials in the [auth] section of:
    /var/opt/gitlab/git-data/repositories/hoge/gitrepo.git/subgit/config
3) Optionally, add custom authors mapping to the authors.txt file(s) at:
    /var/opt/gitlab/git-data/repositories/hoge/gitrepo.git/subgit/authors.txt
4) Run SubGit 'install' command:
    subgit install gitrepo.git

7.設定ファイルを修正した後、subgitのinstallコマンドを実行

$ subgit install gitrepo.git

8.(キーがある場合)rootユーザでライセンスキーをインストール

# subgit register --key subgit.key gitrepo.git
SubGit version 3.2.4 ('Bobique') build #3670

Detecting committers in 2 repositories...

Registration information:

    Registered for:       xxxxx
    Purchase ID:          xxxxx
    Git Committers Limit: xxxxx
    Free upgrades until:  xxxxx

REGISTRATION SUCCESSFUL

Thank you for registering SubGit!
Visit http://www.subgit.com/ in case you have any questions and for more information on SubGit.

GitとSubversionを同期してくれるSubGitを全力で推したい

Subversion Git SubGit

会社のバージョン管理ツールをSubversonからGitへと緩やかに移行中です。
会社から求められていたのは、

  • 今までの歴史はすべて引き継ぐ
  • Git移行後もSubversionと同期を取ること(徐々にGitに慣れてもらうため)

の2つでした。

ツールの選定

SubversionからGitへの変換ツールはいろいろありますが、以下の3つについて調査しました。

git-svn

Git - Git と Subversion

SubversionからGitへ移行するツールはgit-svnが有名ですが、git-svn

  • 巨大なリポジトリの移行が大変
  • 基本的に片方向の変換

などの問題がありました。

git-as-svn

github.com

SubversionとGitを同期するためのツールです。
同期が取れるという点で導入を考えたのですが、What is lacking?の項目にある通り、Subversionのひとつのブランチしか同期することができません。

SubGit

subgit.com

そんな中見つけたのがSubGitです。
SubversionからGitへの変換はフリーで利用可能。
SubversionとGitの同期はライセンスが必要です。
30日の試用版で問題がなかったので会社にライセンスを購入してもらいました。

SubGitは

  • SubversionとGitの同期が可能
  • Gitへの変換が高速

など、必要な条件を満たしていました。

SubGitインストール方法

こちらは長くなるので別の記事にまとめました

tmegos.hatenablog.jp

git-svnとSubGitの比較

使い分け

  • git-svn: メインはSubverion。Gitを使いたいユーザがローカルのみでGitを使用を想定。
  • SubGit: メインはGit。SubversionからGitへ移行するときに使う。またSubversonとGitの同期も取れるので、段階的にGitに移行することもできる。

速度比較

リビジョンが1500ほどあるリポジトリsvn-gitとSubGitでGitに変換する処理の時間を比較しました

  • svn-git: 約2時間
  • SubGit: 約3分

SubGitものすごく早いです。桁違いです。これならSubversionリポジトリをGitに移行するのも簡単です。

まとめ

  • SubversionからGitへ移行するならSubGitを使うべき!

git-svnを使って変換エラーや変換時間の長さと格闘している方にぜひ使ってほしいです。

GitLabのリストア手順について

GitLab

手順

基本的には以下の公式サイトの手順通りに行えばリストアできます。

docs.gitlab.com

注意点

BACKUPオプションはバックアップファイルの日付の部分のみを指定する。

BACKUP=timestamp_of_backup (required if more than one backup exists)

例えば以下のようにファイル名を指定すると、語尾に_gitlab_backup.tarがつけられ、ファイルが見つからない旨のエラーが発生します。

# gitlab-rake gitlab:backup:restore BACKUP=1487786527_2017_02_23_gitlab_backup.tar
The backup file 1487786527_2017_02_23_gitlab_backup.tar_gitlab_backup.tar does not exist!

正しいコマンドは以下の通り。

# gitlab-rake gitlab:backup:restore BACKUP=1487786527_2017_02_23 #日付のみ指定

パスを指定する場合も_gitlab_backup.tarは不要。
/mnt/backup/1487786527_2017_02_23_gitlab_backup.tarにファイルがあるとすれば以下のように指定する。

# gitlab-rake gitlab:backup:restore BACKUP=/mnt/backup/1487786527_2017_02_23

nginxでautoindexのファイル更新日時をJSTにする

nginx

autoindex_localtimeonにすると、nginxを動かしているlocaltimeで表示されるようになる。
autoindexonにするだけではグリニッジ標準時で表示されてしまうので注意。

server {
    location / {
        root   /path/to/html;
        autoindex on;
        autoindex_localtime on;
    }
}

Module ngx_http_autoindex_module

オンプレミスでもGitLabでバックアップに失敗していたので対応した

GitLab PostgreSQL

GitLab.comのバックアップがうまくいっていなかったことが話題になっていますが、環境によってはオンプレミスで動かしているバックアップも失敗しているかもしれません。
といいますか私の環境がそうでした

GitLab.com Database Incident - 2017/01/31

GitLab.com melts down after wrong directory deleted, backups fail • The Register

続きを読む

pg_upgradeでつまずいた

PostgreSQL

環境

経緯

gitlab 9.0からデフォルトのPostgreSQLのバージョンが9.6になる(参考記事)とのことだった。
私の環境では、CentOSのrepoからyumでインストールした9.2が入っていたので、このタイミングで9.6をインストールすることにした。

続きを読む