この機能は ayaka-notes/ayakaleaf-pro によって開発され、yu-i-i/overleaf-cep によって改修されたものです。v6.2.0 以降で導入されています。まだベータ版のため、問題があればぜひフィードバックをお寄せください。




GitHub 同期のセットアップ
開発者設定 にアクセスして GitHub OAuth アプリケーションを作成し、CLIENT_ID と SECRET をコピーします。
注意: OAuth App を作成する際は、Authorization callback URL に ${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback を入力してください。Ayakaleaf Pro は OVERLEAF_SITE_URL から同じアドレスを構築するため、config/variables.env でこれを設定する必要はありません。
次に、Overleaf の環境変数ファイルに以下の設定を追加します。
config/variables.env
GITHUB_SYNC_PROXY_URL=http://10.0.0.1:10808。プロキシの使用が現地の法令を遵守していることを確認してください。
GitHub Enterprise
GitHub Enterprise のサポートは v6.3.1 以降で導入されています。それ以前のバージョンは
github.com にのみ接続し、以下の変数は効果がありません。github.com に接続します。GitHub Enterprise Server(セルフホスト)またはデータレジデンシー付きの GitHub Enterprise Cloud(GHE.com)を使用するには、GITHUB_SYNC_URL にインスタンスの Web アドレス(ブラウザーでリポジトリを開く際のアドレス)を設定します。
config/variables.env
GITHUB_SYNC_URL から導出されます。
API エンドポイントは、インスタンスが別の場所(API ゲートウェイの背後など)で API を提供している場合にのみ設定してください。
インスタンスがプライベート CA の証明書を使用している場合は、CA 証明書をコンテナにマウントし、
NODE_EXTRA_CA_CERTS でそれを指定してください。例: NODE_EXTRA_CA_CERTS=/var/lib/overleaf/certs/github-ca.pem。連携されたアカウントとプロジェクトは、連携時のインスタンスに属します。
GITHUB_SYNC_URL を別のインスタンスに切り替える前に、ユーザーに GitHub アカウントとプロジェクトの連携を解除するよう依頼してください。連携と同期を行えるユーザー
Overleaf Cloud と同様に、プロジェクトを GitHub リポジトリに連携できるのはプロジェクトのオーナーのみです。連携後は、編集権限を持つすべての共同編集者が同期できます。- Overleaf は同期を行うユーザーの GitHub アカウントを使って GitHub とやり取りします。そのため、同期を行う共同編集者はそれぞれ自分の GitHub アカウントを連携し、リポジトリのデフォルトブランチへのプッシュが許可されている必要があります。
- 閲覧のみの共同編集者は、そのプロジェクトで GitHub 同期を使用できません。
Q&A
プロジェクトを GitHub に連携して同期するにはどうすればよいですか?
プロジェクトを GitHub に連携して同期するにはどうすればよいですか?
回答: エディターで Integrations を開き、GitHub をクリックします。GitHub アカウントがまだ連携されていない場合は、まず Link to your GitHub account をクリックします。Export Project to GitHub でリポジトリ名を入力し、Repository visibility で Private を選択して、Create a GitHub repository をクリックします。その後、同じカードから Sync with GitHub が開き、GitHub 上の新しいコミットが一覧表示されます。Sync をクリックすると、Overleaf での変更がデフォルトブランチにコミットされ、GitHub での変更がプロジェクトに取り込まれます。同期は双方向ですが、誰かが Sync をクリックしたときにのみ実行され、定期的な同期はありません。両方で変更があった場合、Overleaf は
overleaf-YYYY-MM-DD-HHMMSS という名前の一時ブランチを介してマージします。そのマージでコンフリクトが発生した場合は、GitHub 上で自分でそのブランチをマージしてから、I have manually merged. Continue をクリックしてください。デフォルトブランチに強制プッシュできますか?
デフォルトブランチに強制プッシュできますか?
回答: 推奨しません。Overleaf は強制プッシュを検出して警告を表示し、書き換えられたブランチを引き継いで、前回の同期以降に Overleaf で行われた変更をマージします。予期しない事態を避けるため、リポジトリの設定でデフォルトブランチへの強制プッシュを禁止してください。
連携済みプロジェクトのデフォルトブランチ名を変更できますか?
連携済みプロジェクトのデフォルトブランチ名を変更できますか?
回答: 変更しないでください。Overleaf は、プロジェクトを連携したときのブランチと同期し続けます。別のブランチと同期するには、プロジェクトの連携を解除してから、リポジトリを新しいプロジェクトにインポートしてください。新しいプロジェクトでは現在のデフォルトブランチが使用されます。
GitHub 同期で「Something wrong with GitHub request」と表示される
GitHub 同期で「Something wrong with GitHub request」と表示される
回答: このメッセージは、ネットワーク、DNS、TLS、プロキシの問題などにより、サーバーが GitHub にアクセスできなかったことを意味します。
bin/logs web を実行して完全なエラーを確認してください。サーバーが GitHub にアクセスするためにプロキシが必要な場合は、GITHUB_SYNC_PROXY_URL を設定してください。GitHub OAuth App の「Expire user access tokens」は無効にすべきですか?
GitHub OAuth App の「Expire user access tokens」は無効にすべきですか?
回答: はい。GitHub 同期は期限切れのトークンを更新しません。トークンの有効期限を有効にしていると、ユーザーはトークンが期限切れになるたびに GitHub を再接続する必要があります。
インスタンスはインターネットからアクセス可能である必要がありますか?
インスタンスはインターネットからアクセス可能である必要がありますか?
回答: いいえ。アカウントの連携はユーザーのブラウザを経由して行われるため、OAuth コールバックのアドレスはユーザーのブラウザで開ければ十分です。サーバーは GitHub にアクセスできればよく、そのためにプロキシが必要な場合は
GITHUB_SYNC_PROXY_URL を設定してください。GitHub がインスタンスを呼び出すことはありません。プロジェクトは、ユーザーがエディターで同期したときにのみ同期されます。GitHub アカウントの連携に失敗する、または連携されずに戻されてしまう
GitHub アカウントの連携に失敗する、または連携されずに戻されてしまう
回答: 次の項目を順に確認してください:
OVERLEAF_SITE_URLに設定したアドレスとまったく同じアドレスで Overleaf を開いてください。GitHub は${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callbackに戻し、ログイン状態は操作を開始したアドレスでのみ有効なため、別のホスト、IP、ポートではログインページや「Restricted, sorry you don’t have permission to load this page」で終わってしまいます。- OAuth App の Authorization callback URL は、スキーム、ホスト、ポートが同じ
${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callbackである必要があります。 Failed to obtain access token from Git serverというエラーページは、GitHub がトークンを返さなかったことを意味します。GITHUB_SYNC_CLIENT_IDとGITHUB_SYNC_CLIENT_SECRET、およびサーバーが GitHub にアクセスできることを確認してください。完全なエラーを確認するにはbin/logs webを実行してください。
config/variables.env を変更した後は、bin/up を実行してコンテナを再作成してください。リポジトリのインポートが「EmptyZipFileError: empty_zip_file」または「unzip failed」で失敗する
リポジトリのインポートが「EmptyZipFileError: empty_zip_file」または「unzip failed」で失敗する
回答: Overleaf はリポジトリのデフォルトブランチの最新コミットの zip アーカイブをインポートします。このエラーは、そのアーカイブに Overleaf がインポートできるファイルが含まれていないことを意味します。GitHub でデフォルトブランチを確認してください:
- インポート時に Overleaf がスキップするファイルだけでなく、プロジェクトファイルが含まれていること。スキップされるのは、
.gitignoreや.gitmodulesなどのドットファイル(.latexmkrcは保持されます)や、*.aux、*.log、*.bbl、*.synctex.gz、*.doc、*.docxなどのビルドファイルです。 - ファイルが Git サブモジュール内にしか存在しないわけではないこと。GitHub のアーカイブでは、サブモジュールは空のフォルダーになります。
- 期待するファイルが別のブランチではなく、デフォルトブランチにあること。インポートでは常にデフォルトブランチが使用されます。

