見出し画像

Now in REALITY Tech #62 Sourcetreeでなんとかgitと戦ってもらう話

こんにちは、Unityエンジニアのようてんです。ミニカップゼリーを冷凍庫で冷やしておいて、つらいことがあった際に食べるのがマイブームです。

今回の「Now in REALITY Tech」はUnityチーム…に特別限った話ではないのですが、gitクライアント、主にSourcetreeの話をします。
弊REAILTYアプリのUnityリポジトリは、以前のエントリでもご紹介した通り、アセットも含め全てgitで管理されています。
エンジニアはほぼ全員MacでIDE(Xcode/Android Studio/Rider)とgitコマンドを併用して暮らしており、統一がとれているのですが、非エンジニアはWindows+Sourcetreeが主流ながら、Mac+Sourcetree派もおり、さまざまな環境でのgit操作をサポートする必要があります。

そんなわけで本エントリでは、ここ数年、Sourcetreeによるgit操作のサポートを担当してきた経験から、いくらかノウハウを紹介させていただきます。

【1】Personal access tokenはよいものです

Personal access tokenはDeveloper settingsにあります

最初に、Personal access tokenに関するGitHubの公式docを紹介しておきます。PATという略称が使われることを覚えておくとちょっと調べ物がやりやすくなると思います。

コマンドラインに慣れたエンジニアはSSH鍵での認証に習熟していることが多いのですが、黒い画面を使いこなせないユーザにとって、SSH鍵は得体のしれない存在です。
ブラウザからかんたんに生成・破棄・確認することができ、トークン文字列という目に見える形で存在するPersonal access tokenは大変オススメです。

後述する罠がいくつかあるのですが、「ビデオ通話で画面共有越しにサポートしやすい」という観点で、ここ最近はPersonal access token派で落ち着きました。

※ただし、Personal access tokenを使った際にはHTTPS(https://で始まるアドレス)のリポジトリにのみアクセスできるため、SSH(git@で始まるアドレス)のsubmoduleを抱えていた際は特殊な対応が必要になります。リポジトリ構成によってはPATではなくSSH鍵の方が向いているケースもあることを認識しておいてください。

【2】Sourcetreeでは、パスワードを入力する欄にPersonal access tokenを入力する必要があり、ここが最重要ポイントです

【2023.04.05追記】Sourcetree最新版(3.4.12で確認)で、UIの表示がPersonal Access Tokenベースに修正され、わかりやすくなりました!

認証欄が「Personal Access Token」表記になりました
こちらの説明文言もPATになっています!自然!

Sourcetreeでのアカウント設定の最大の難所です。Sourcetreeのセットアップに失敗した人の9割がここでつまづいています。

プロトコルはHTTPS、認証はBasicを選択
ここにパスワードではなく、Personal access tokenを入力します
ひとまずOKです

ただし、Sourcetreeでこの「認証に成功」は「Personal access token」ではない「GitHubのログインパスワード」を入れた際にも出るのですが、その先の操作でエラーになります。このことを認識しておいてください。

パスワード欄にパスワードを入れてはいけない」のです、ひどい罠です。間違って入力してしまった際の復旧方法をこの後に説明します。

【3】間違った入力をした際には、OS管理下の情報を削除するとやりなおせます

OSのセキュリティ情報として保存されます

前述のパスワード入力欄でPersonal access tokenを入力しなければいけないところで間違ってGitHubのパスワードを入力しても、その場では何もおきません。

その後、リポジトリを操作する際にはじめてエラーとなり、「remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.」などの文字列が表示されます。先に言ってほしい。

OSとSourcetreeに間違って保存された情報を完全にクリアし、全てを最初からやりなおす手順を把握しておきましょう。

Windowsでの完全削除の手順

  1. まずSourcetreeをアンインストールします

  2. 次に、「C:\Users\ユーザ名\AppData\Local\Atlassian」配下のSourceTree関連フォルダを全て削除します

  3. 続けて、Windowsに管理されている認証情報をクリアします

    • コントロール パネル→すべてのコントロール パネル項目→資格情報マネージャーより、Windows資格情報のうち、「sourecetree-で始まる情報」を削除します

    • また、「git for Windows」をインストールしている際には、そちら経由で保存された情報が原因なことがあります。この際には資格情報マネージャーより、同様に「gitで始まる情報」も削除します

まず資格情報マネージャーを呼び出します
まずsourcetreeの情報を、それでもダメならgitの情報を削除します

Macでの完全削除の手順

  1. まずSourcetreeをアンインストールします

  2. 次に、「~/Library/Application Support/SourceTree/」配下のファイルを全て削除します

  3. 続けて、Macに管理されている認証情報をクリアします

    • キーチェーンアクセスAppを開き、右上の検索欄に「sourcetree」と入力し、出てきたパスワードを副クリックから削除

キーチェーンアクセスAppに保存されたパスワード

参考:「How to Wipe SourceTree Preferences

その他

その他、いくつかあるあるネタと対処方法を記載しておきます。

  • リポジトリのクローン先のフォルダパスは半角英数、しかもスペースを含まないパスに固定させるのが鉄板です。

    • 具体的には「C:¥Unity」など

  • リポジトリはサイズが大きいため、小容量のSSDなどを使っている際にディスクフルでエラーになることがあります。利用PCの空きディスク容量は確認しておきましょう。

  • 意外と多いのが「VPNを接続しっぱなしなどにより、インターネットが元気でない際にうまくいかない」です。

    • VPNを切ってもらう、ネットワーク環境を改めて確認してもらう、場合によっては別のWiFi環境などを探してもらう、などが必要です。

    • 弊社では最近導入されたネットワーク監視型のセキュリティツールがUnity Package Mangerによるダウンロードと完全にバッティングしており、オフにする必要がありますorz

  • Git LFSを忘れずに有効にしてもらい、LFS関連ファイルのダウンロードが漏れないように気をつけましょう。

    • Unityで多くのファイルがエラーを起こしている際にはLFS関連ファイルがダウンロードされていないことが考えられます。Sourcetreeからは「リポジトリ」>「Git LFS」>「リポジトリの初期化」や「LFSのコンテンツをプル」などを試してみてください。

リポジトリクローン直後に聞かれた際には忘れずに「はい」を選択しましょう
  • どうしようもなくなった際に、ビデオ通話+画面共有を用いて、リモートで黒い画面を操作するのは強力な手段です。「Git for Windows」をインストールさせておくのはよい保険になりえます。

    • ただし、Git for Windowsのインストールウィザードのフル英語はかなりハードルの高いものです。こちらもきちんとしたマニュアルを用意しておくのが望ましいです。

      • が、この子結構UIが頻繁に変わるんですよね…orz

      • 改行コードの運用は結構悩ましく、ケースバイケースです

「Checkout as-is, commit as-is」で各種エディタ側で対応するのが無難という認識です

さいごに

このエントリの下書きを書いた際に、結構「なぜこんなに癖のあるSourcetreeを苦労して使わせているのか」というコメントを同僚エンジニアから複数もらいました。

元々入社時(2018年)にすでにArtの方々は使っていましたし、知らないクライアントでもないのでそのまま継続してサポートを続けていますが、「コマンドプロンプト、黒い画面の出番が少ない」「コンソール的な文字列を見る必要がとても少なく、しっかりGUIがある」「日本語に対応している」を兼ね備えたgitクライアントは多くなく、数年つきあっている経験としてはSourcetree、ちゃんとよい子ですよ、というのは主張させていただきます。

REALITYではエンジニアと非エンジニアで仲良く肩を組んでgitに立ち向かっていく仲間を募集しています!