GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

anishathalye

git-remote-dropbox – GitとDropboxの間の透過的なブリッジ – Dropbox(共有)フォルダをGitリモートとして使用する! ..

投稿日:

GitとDropboxの間の透過的なブリッジ – Dropbox(共有)フォルダをGitリモートとして使用する! 🎁 http://www.anishathalye.com/2015/08/1…

git-remote-dropbox

git-remote-dropboxは、GitとDropboxの間の透過的な双方向ブリッジです。 Dropboxフォルダや共有フォルダをGitリモートとして使うことができます!

このGitリモートヘルパーは、Dropboxを真のGitリモートのように動作させます Dropboxをバッキングストアとして使用している間は、伝統的なGitリモートによって提供されるすべての保証を維持します つまり、複数の人が同時にリポジトリを操作していても正しく動作し、Dropbox共有フォルダをGitリモートとして共同作業に使用できるようになります。

ヘルパーをインストールしたら、 dropbox:///path/to/repoようなリモートを追加するだけで簡単に使用できます。

Dropboxにマウントされたフォルダまたは共有フォルダ内のリポジトリをクローンするには、次のコマンドを実行します。

git clone "dropbox:///path/to/repo" -b master

既存のローカルリポジトリにリモートを追加するには、次のコマンドを実行します。

git remote add origin "dropbox:///path/to/repo"

リポジトリディレクトリは、初めてプッシュするときに自動的に作成されます。

リモートを追加した後は、通常のGitリモートと同様に扱うことができます。 Dropboxでバックアップされたリモートは、通常のリモートでサポートされているすべての操作をサポートしています。また、共有フォルダを使用している場合でも、並行操作があってもアトミック性が保証されます。

セットアップ

  1. pip install git-remote-dropbox使ってヘルパーをインストールしてください。

  2. アプリケーションコンソールに移動して、「フル・ドロップボックス」アクセス権(または「Appフォルダ」アクセス権を備えたDropbox APIアプリケーションを作成し、Dropboxの共有機能を使用してgit-マルチユーザー設定ではリモートドロップボックス)、自分用のアクセストークンを生成することができます。

  3. ~/.config/git/git-remote-dropbox.jsonまたは~/.git-remote-dropbox.json OAuthトークンを保存します。 ファイルは次のようになります。

    {
        "default": "xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx"
    }

複数のアカウント

git-remote-dropboxは、複数のDropboxアカウントの使用をサポートしています。 さまざまなアカウントのOAuthトークンを作成し、ユーザ定義のユーザ名をキーとして設定ファイルにすべて追加することができます。

{
    "alice": "xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx",
    "ben": "xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx",
    "charlie": "xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx"
}

git-remote-dropboxに、 username対応するトークンを使用するように、 dropbox://username@/path/to/repoようなURLを指定することができます。

また、 dropbox://:token@/path/to/repoようなURLを使用して、トークンをインラインで指定することもできます。

ノート

  • Dropboxフォルダ内のGitリポジトリと直接対話しないでください。常にgit-remote-dropboxを使用してください。 Dropboxクライアントを使用してファイルを同期している場合、予期しない競合を避けるために、 選択同期を使用してリポジトリを含むフォルダの同期を無効にすることをお勧めします。
  • git-remote-dropboxはDropboxデスクトップクライアントを使用せず、APIを直接使用します。 デスクトップクライアントがインストールされている必要はありません。
  • リモートヘルパーは、シャロークローニングをサポートしていません。
  • リポジトリを複製するか、多くのオブジェクトを取得すると、多くの緩いオブジェクトが生成されます。 ローカルリポジトリのスペースを節約するには、 git gc --aggressive実行します。
  • Dropboxからリポジトリを複製した後、Gitはブランチを自動的にチェックアウトしません。 ブランチをチェックアウトするには、 git checkout <branch>実行します。

よくある質問

どうして私のGitリポジトリをDropboxに入れておかないと、クライアントがそれを同期させるべきではないのですか?

良いワークフローとしてこれを勧めるインターネット上の記事がたくさんあるようです。 しかし、これは良い考えではありません デスクトップクライアントは、Gitがディスク上のフォーマットをどのように管理しているかを認識していないので、同期の変更や遅延が同時に発生した場合、矛盾するGitリポジトリが破損する可能性があります。 これは、単一ユーザーの場合にタイミングがうまくいくのは珍しいかもしれませんが、まだ安全ではありません。

Dropboxの共有フォルダに裸のGitリポジトリを置いて、それをフォルダベースのGitリモートとして使用し、それをデスクトップクライアントと同期させるべきではないのはなぜですか?

これは良い考えであることを示唆するインターネット上の記事がいくつかあるようです。 そうではありません。 デスクトップクライアントを使って裸のGitリポジトリを同期させることは安全ではありません。 同時の変更や同期の遅延により、Gitリポジトリが破損する可能性があります。

どうすればgit-remote-dropboxヘルパーを使わずにDropboxからリポジトリにアクセス/回復できますか?

git-remote-dropboxはGitと互換性のあるオンディスク形式を使用するため、ヘルパーを使用せずにリポジトリにアクセスするのは簡単です:

  1. Dropboxからリポジトリデータ( objectsとディレクトリを含むディレクトリ)をダウンロードします。
  2. 新しいディレクトリを作成し、ディレクトリ内の空のGitリポジトリを初期化します。
  3. 新しく初期化されたリポジトリの.git/refs.git/objectsをDropboxからダウンロードしたデータで上書きします( rm -rf .git/{refs,objects} && cp -r /path/to/data/{refs,objects}.git/ )。
  4. ブランチをチェックアウトします( git checkout -f masterようなコマンドを使用します)。
  5. 必要に応じてgit gc --aggressiveを実行して、ローカルリポジトリのディスク領域を節約します。

設計

git-remote- dropboxのデザインについては、 DESIGN.rstを参照してください。 これは、プロジェクトへの貢献を考えている場合に特に便利です。

貢献する

git-remote-dropboxを改善する方法についてのアイデアはありますか? 機能リクエスト、バグレポート、またはパッチがありますか? すばらしいです! あなたができることについては、 CONTRIBUTING.mdを参照してください。

パッケージング

  1. バージョン情報を更新します。
  2. python setup.py sdist bdist_wheelを使ってパッケージをビルドします。
  3. twine upload -s dist/*を使用してパッケージにtwine upload -s dist/*ます。

ライセンス

Copyright(c)2015-2018 Anish Athalye。 MITライセンスの下でリリースされました。 詳細については、 LICENSE.rstを参照してください。







-anishathalye

執筆者: