DUICUO

Git を使用してファイルを共有するにはどうすればよいでしょうか?

[[312537]]

SparkleShareは、オープンソースのGitベースのDropbox風ファイル共有アプリケーションです。あまり知られていないGitの活用法については、こちらの記事シリーズをご覧ください。

Gitは、現代のコンピューティング機能を1つのプログラムに凝縮した数少ないアプリケーションの一つであり、多くのアプリケーションの計算エンジンとして利用できます。ソフトウェア開発におけるソースコードの変更履歴を追跡する用途で最もよく知られていますが、他にも多くの用途があり、作業をより簡単に、より整理されたものにすることができます。このGitシリーズでは、あまり知られていないGitの7つの活用方法をご紹介します。

今日は、ファイル共有の基盤として Git を使用する SparkleShare を見ていきます。

ファイル共有のためのGit

Git の利点の一つは、その固有の配布機能です。共有設定も可能です。ネットワーク上の他のコンピューターとリポジトリを共有するだけの場合でも、Git は共有場所からファイルを取得する操作に関して透明性を提供します。

インターフェースの進化に伴い、Gitは驚くほどシンプルになりました。ユーザーによって使い方は異なりますが、作業を始める際に共通しているのは、シンプルなgit pullか、もう少し複雑なgit pull && git checkout -b my-branchです。しかし、コンピューターにコマンドを入力するのは非常に面倒で、面倒だと感じる人もいます。コンピューターは生活を楽にするために設計されており、反復的なタスクに優れているため、Gitでファイルを共有するより簡単な方法があります。

スパークルシェア

SparkleShareプロジェクトは、Gitベースのクロスプラットフォーム、オープンソースのDropboxスタイルのファイル共有アプリケーションです。ファイルをSparkleShareの指定ディレクトリにドラッグ&ドロップするだけで、Gitコマンドを自動化し、追加、コミット、プッシュ、プルといったプロセスを実行します。Gitベースであるため、高速で差分ベースのプッシュとプルが可能で、Gitバージョン管理やGitフックなどのバックエンドインフラストラクチャの利点をすべて活用できます。完全にセルフホストすることも、GitLab、GitHub、BitbucketなどのGitホスティングサービスと連携して使用することもできます。さらに、基本的にGitフロントエンドであるため、SparkleShareクライアントはなくてもGitクライアントがあれば、デバイスからSparkleShare内のファイルにアクセスできます。

Git のメリットを享受できる一方で、Git によくある制限もすべて課せられます。SparkleShare で何百もの写真、音楽、動画を保存するのは現実的ではありません。Git はテキスト用に設計・最適化されているためです。確かに大きなバイナリデータファイルも保存できますが、履歴を追跡するため、一度ファイルを追加すると完全に削除することはほぼ不可能です。そのため、SparkleShare の使い勝手は一部の人にとってはやや制限されますが、スケジュール管理を含む多くのワークフローには最適です。

SparkleShareをインストールする

SparkleShareはクロスプラットフォーム対応で、WindowsとMac用のインストーラーはウェブサイトから入手できます。Linuxの場合はFlatpakインストーラーが用意されているか、ターミナルで以下のコマンドを実行することでインストールできます。

  1. $ sudo flatpak remote - add flathub https : //flathub.org/repo/flathub.flatpakrepo
  2. $ sudo flatpak install flathub org . sparkleshare . SparkleShare

Gitリポジトリを作成する

SparkleShareはSaaS(Software as a Service)ではありません。SparkleShareはGitリポジトリと通信するためにコンピューター上で実行されますが、SparkleShareはデータを保存しません。フォルダーと同期されたGitリポジトリがまだない場合は、SparkleShareを起動する前に作成する必要があります。マネージドGit、セルフマネージドGit、セルフマネージドSparkleShareの3つのオプションがあります。

マネージド Git

SparkleShareは、アクセス可能なGitリポジトリをストレージとして使用できます。そのため、GitLabやその他のホスティングサービスのアカウントをお持ちの場合(または新規作成する場合)、SparkleShareのバックエンドとして使用できます。例えば、オープンソースのNotabug.orgサービスは、GitHubやGitLabに似たGitホスティングサービスですが、その独自の機能はSparkleShareの柔軟性を示しています。ユーザーインターフェースによっては、ホスティングサービスによって新しいリポジトリの作成方法が異なる場合がありますが、主要なリポジトリはすべて同じ基本モデルに従っています。

まず、ホスティングサービスで「新しいプロジェクトまたはリポジトリを作成」ボタンを見つけてクリックして開始します。次に、リポジトリ作成プロセスを進め、名前、プライバシーレベル(リポジトリは通常、デフォルトで公開されています)、そしてリポジトリをREADMEファイルで初期化するかどうかを指定します。READMEファイルが必要かどうかに関わらず、 README初期化してください。ファイルを使用してリポジトリを作成することは必須ではありませんが、Gitホストがリポジトリ内のmasterブランチをインスタンス化することを強制的に行うため、フロントエンドアプリケーション(SparkleShareなど)がコミットおよびプッシュするためのブランチを確保するのに役立ちます。READMEファイルREADMEほぼ空の場合でも、正常に接続できたかどうかを確認するために使用できます。

Gitリポジトリの作成

リポジトリを作成したら、SSHクローン用のURLを取得します。GitプロジェクトからURLを取得するのと同じように、このURLも取得できます。リポジトリページに移動し、「クローン」ボタンまたはフィールドを探します。

GitHub のクローン URL。

GitLab のクローン URL。

これはSparkleShareがデータを取得するために使用するアドレスなので、メモしておいてください。これでGitリポジトリの設定が完了しました。

セルフホスト型 Git

SparkleShareを使えば、アクセスできる任意のコンピューターからGitリポジトリにアクセスできます。ベアGitリポジトリ以外、特別な設定は必要ありません。ただし、他のユーザーにGitリポジトリへのアクセスを許可したい場合は、GitoliteなどのGitマネージャーや、SparkleShare独自のDazzleサーバーなどを使用してSSHキーとアカウントを管理する必要があります。少なくとも、Gitリポジトリにアクセスできるユーザーがサーバーの他の部分に自動的にアクセスできないように、Git専用のユーザーを作成してください。

Git ユーザー (または、ユーザーとグループの権限の管理に精通している場合は自分のユーザー) としてサーバーにログインし、リポジトリを作成します。

  1. $ mkdir ~/ sparkly . git
  2. $ cd ~/ sparkly . git
  3. $ git init -- bare .

Git リポジトリが設定されました。

眩惑

SparkleShare の開発者は、Git リポジトリを自己ホストできるように、Dazzle と呼ばれる Git 管理システムを提供しています。

サーバー上で、パスで指定された場所に Dazzle アプリケーションをダウンロードします。

  1. $ curl https : //raw.githubusercontent.com/hbons/Dazzle/master/dazzle.sh --output ~/bin/dazzle
  2. $ chmod + x ~ /bin/ dazzle

DazzleはGitとSparkleShare専用のユーザーを設定し、SparkleShareアプリケーションによって生成されたキーに基づいてアクセス権限を実装しました。これで、プロジェクトを1つ設定するだけで済みます。

  1. $ dazzle create sparkly

これでサーバーが設定され、SparkleShare ホスティングの準備が整いました。

SparkleShareを設定する

SparkleShareを初めて起動すると、SparkleShareがストレージとして使用するサーバーの設定を求めるメッセージが表示されます。このプロセスは初回インストールウィザードのように見えるかもしれませんが、実際にはSparkleShareで新しい共有場所を設定するための一般的なプロセスです。多くの共有ドライブアプリケーションとは異なり、SparkleShareでは複数の場所を一度に設定できます。最初に設定する共有場所は、後で設定する共有場所と比べてそれほど重要ではありません。また、SparkleShareやその他のサービスを登録する必要はありません。SparkleShareをGitリポジトリに指定するだけで、最初のSparkleShareフォルダの同期を維持できます。

最初の画面で、SparkleShareがGitコミット履歴で使用するID情報を入力してください。どんな情報でも構いません。意味のない偽の情報でも構いません。この情報はコミットメッセージにのみ使用されます。Gitバックエンドプロセスの監査に興味がない場合は、コミットメッセージが表示されないことさえあります。

次の画面でホスティングの種類を選択します。GitLab、GitHub、Planio、Bitbucketをご利用の場合は、適切なものを選択してください。それ以外の場合は、「自分のサーバー」を選択してください。

Sparkleshareホストの選択

この画面の下部に、SSHクローンのURLを入力する必要があります。Gitをセルフホストしている場合、アドレスは<ssh://[email protected]>のようになり、リモートパスはこの目的で作成されたGitリポジトリへの絶対パスになります。

上記のセルフホストの例に基づくと、架空のサーバー アドレスはssh://[email protected]:22122 ( :22122 、リモート パスは/home/git/sparkly.gitです。

Notabug.org アカウントに切り替えると、上記の例のアドレスはssh://[email protected]になり、パスはseth/sparkly.gitになります。

SparkleShareは最初の試行でホストへの接続に失敗します。これは、SparkleShareクライアントID(SparkleShareアプリケーション固有のSSHキー)をGitホストにコピーしていないためです。これは想定内の動作なので、処理をキャンセルしないでください。SparkleShareの設定ウィンドウを開いたまま、システムタスクバーのSparkleShareアイコンからクライアントIDを取得します。クライアントIDをクリップボードにコピーして、Gitホストに追加してください。

SparkleshareからクライアントIDを取得する

ホストされている Git アカウントにクライアント ID を追加します。

UIのわずかな違いを除けば、SSHキー(およびすべてのクライアントID)を追加する手順は、どのホスティングサービスでも基本的に同じです。Gitホストのウェブダッシュボードで、ユーザー設定に移動し、「SSHキー」カテゴリを見つけます。「新しいキーを追加」ボタン(または同様のボタン)をクリックし、SparkleShareのクライアントIDを貼り付けます。

SSHキーの追加

キーを保存してください。他の人(共同作業者や家族など)が同じリポジトリにアクセスできるようにするには、その人のSparkleShareクライアントIDを教えて、アカウントに追加してもらう必要があります。

セルフホスト型 Git アカウントにクライアント ID を追加します。

SparkleShare クライアント ID は単なる SSH キーなので、それをコピーして Git ユーザーの~/.ssh/authorized_keysファイルに貼り付けます。

Dazzleを使用して顧客IDを追加する

Dazzle を使用して SparkleShare プロジェクトを管理している場合は、次のコマンドを使用してクライアント ID を追加してください。

  1. $ dazzle link

Dazzle で ID の入力を求められた場合は、SparkleShare メニューにあるクライアント ID を貼り付けてください。

SparkleShareの使用

GitホストにクライアントIDを追加したら、SparkleShareウィンドウの「再試行」ボタンをクリックしてセットアップを完了します。リポジトリのクローンが完了したら、SparkleShare設定ウィンドウを閉じると、ホームディレクトリに新しいSparkleShareフォルダが作成されます。ホスティングサービスでGitリポジトリを設定し、 READMEファイルまたはライセンスファイルを含めるように選択した場合は、SparkleShareディレクトリで確認できます。

Sparkleshare ファイルマネージャー

さらに、ファイル マネージャーで隠しディレクトリを表示することで表示できる隠しディレクトリもいくつかあります。

GNOMEで隠しファイルを表示する

SparkleShareの使い方は、コンピュータ上の任意のディレクトリを使うのと同じです。つまり、そこにファイルを置くだけです。SparkleShareフォルダにファイルまたはディレクトリを置くたびに、バックグラウンドでGitリポジトリにコピーされます。

特定のファイルを除外する

Git はすべてを記憶するように設計されているため、特定のファイルタイプを記録から除外したい場合があります。一部のファイルを除外するのには理由があります。SparkleShare が管理するファイルを定義することで、大きなファイルを誤ってコピーすることを防ぐことができます。また、論理的に関連するファイル(例:MIDI ファイルとその .flac エクスポート)を同じディレクトリに保存し、大きなファイルは手動でバックアップし、テキストベースのファイルは SparkleShare にバックアップさせるというシナリオも考えられます。

システムのファイルマネージャーに隠しファイルが表示されない場合は、表示してください。SparkleShareフォルダに移動し、リポジトリを表すディレクトリに移動して、 .gitignoreというファイルを見つけ、テキストエディタで開きます。 .gitignoreには、ファイル拡張子またはファイル名(1行に1つずつ)を入力できます。リストに一致するファイルは無視されます(ファイル名で示されているとおりです)。

  1. Thumbs . db
  2. $RECYCLE . BIN /
  3. . DS_Store
  4. . _ *
  5. . fseventsd
  6. . Spotlight - V100
  7. . Trashes
  8. . directory
  9. . Trash -*
  10. *. wav
  11. *. ogg
  12. *. flac
  13. *. mp3
  14. *. m4a
  15. *. opus
  16. *. jpg
  17. *. png
  18. *. mp4
  19. *. mov
  20. *. mkv
  21. *. avi
  22. *. pdf
  23. *. djvu
  24. *. epub
  25. *. od { s , t }
  26. *. cbz

最も頻繁に遭遇するファイルの種類はご存知でしょうから、SparkleShareディレクトリに侵入する可能性が最も高いファイルへの対処に重点を置きましょう。もう少し詳しく知りたい場合は、Notabug.orgやWeb上で.gitignoreファイルの優れたコレクションを見つけることができます。

これらのエントリを.gitignoreファイルに保存することで、Gitホストに送信する必要のない大きなファイルをSparkleShareディレクトリに置くことができ、SparkleShareはそれらを完全に無視します。もちろん、これは、それらのファイルがバックアップ可能であるか、SparkleShareの共同作業者に配布可能であることを確認する必要があることを意味します。

オートメーション

自動化は、私たちがコンピューターと交わしてきた暗黙の了解の一つです。コンピューターは、人間が苦手としたり、記憶に残すことが苦手としたりする、反復的で退屈なタスクを実行します。SparkleShareは、定型的なデータ配信を自動化する優れたシンプルな方法です。しかし、すべてのGitリポジトリに適しているわけではありません。高度なGit機能用のインターフェース、一時停止ボタン、手動管理機能がありません。しかし、これは問題ありません。その対象範囲は意図的に限定されているからです。SparkleShareは、設計通りの機能を、そしてそれをうまく実行します。そして、ユーザーが心配する必要のないGitリポジトリです。

この安定した目に見えない自動化を使用したい場合は、SparkleShare をお試しください。