背景紹介#
軽量で無料のファイル同期ソフトウェアを使用したいと思い、いくつか調べましたが、どれも重く、突然 Git を思いつきました。Git は、マルチユーザーの分散協調をネイティブにサポートしており、Git サーバーもあります。
大まかな原理は、ローカルディレクトリのサブファイルとサブディレクトリの変更を監視し、変更後に自動的に Commit し、repo が Commit を受け取るとフックがトリガーされるため、コールバック操作、つまり自動的な Pull が実現できます。これにより、ファイルの自動アップロードと自動ダウンロードの 2 つの主要なポイントを押さえることができます。
環境の準備#
Node.js
をインストールしてください。ダウンロードページに移動する、左側のLTS
をダウンロードしてください。Git For Windows
をインストールしてください。直接ダウンロードする
ソースコードのダウンロード#
ソースコードのダウンロードページに移動する、【クローン / ダウンロード】ボタンをクリックし、【ZIP をダウンロード】をクリックします。以下の画像を参照してください:
ソースコードの圧縮ファイルをダウンロードしたら、解凍してください。
次に、cmd
を開き、ソースコードのディレクトリに移動します。例えば、D:/git-file-sync
と入力し、npm i
を入力して、実行に必要な依存ファイルをダウンロードします。
設定の変更#
ソースコード内のsrc/index.ts
ファイルを開いてください:
// 必須の設定
const user = 'root';
const password = 'P@ssw0rd';
const repo = '192.168.0.228:8080/gitlab-instance-be4f27ff/webhook-tests.git';
const localPath = '/home/xiaoquantang/dev/tests/git-sync/webhook-tests'; // !!ローカルディレクトリで、空のディレクトリであることを確認してください
// オプションの設定
const pushDelayWhenChange = 1000; // ファイルが変更された後、データをアップロードするまでの時間、ミリ秒単位、0より大きい値を推奨します
const httpServerPort = 3000; // HTTPサーバーのポート
以下は必ず入力する必要があります:
user
:Git のログインユーザー名password
:Git のログインパスワードrepo
:Git リポジトリのアドレス。存在しない場合は、GitLab などのプラットフォームにアクセスしてリポジトリを作成してください。http://
またはhttps://
のプレフィックスは含めないでください。localPath
:ローカル保存ディレクトリ。このディレクトリは空のディレクトリである必要があります。
以下はオプションの設定です:
pushDelayWhenChange
:ディレクトリ内のファイルまたはサブディレクトリが変更された後、変更を Git リポジトリにアップロードするまでの時間httpServerPort
:Git リポジトリのメッセージプッシュを受け取るための HTTP サーバーのポート
GitLab の設定#
ローカルアクセスを有効にする#
【管理者】をクリックし、ページを調整した後、左下の【設定 > ネットワーク】をクリックし、右側で【アウトバウンドリクエスト】を見つけ、最初のオプションをチェックし、変更を保存してください。
リポジトリに Webhook を追加する#
Git リポジトリを開き、左側の【設定 > Webhooks】をクリックし、右側で以下の操作を行います:
URL
フィールドに、http://ここにgit-file-syncプログラムが実行されているホストのローカルIP:3000
という形式でアドレスを入力します。ここでの3000
ポートは、git-file-sync
プログラムが実行された後に作成される HTTP サーバーのポートであり、必要に応じて変更できます。- 【トリガーソース】の下の【プッシュイベント】をチェックします。
- 【SSL 検証】の下の【SSL 検証を有効にする】をチェックを外します。
- 【Webhook を追加】ボタンをクリックします。
注意:もし 10 台のホストでgit-file-sync
を実行している場合、それぞれのホストに HTTP サーバーが作成されますので、10 台のホストの Webhook を設定する必要があります。つまり、リポジトリにプッシュイベントがある場合、GitLab はすべての Webhook にイベントをループして送信します。
ファイル同期プログラムの起動#
cmd
ウィンドウを開き、git-file-sync
のソースコードディレクトリに移動し、yarn
を入力して依存関係を復元し、最後にyarn dev
を入力してください。