cloudlatex-team / cloudlatex-vscode-extension

Other
50 stars 4 forks source link

ローカルで追加した.editorconfigファイルのアップロードに失敗する #25

Closed hi120ki closed 1 year ago

hi120ki commented 1 year ago

ローカルでプロジェクトを同期し、VSCodeでのインデントの制御のために.editorconfigファイルを追加したところ、「ファイルの同期に失敗しました」というダイアログが出ます。(以下のログが出力されました。)

Ready
[Log   - 10:52:39] latex-cli 2.0.0
[Log   - 10:52:39] On chokidar ready event
[Info  - 10:52:40] Login Successful
[Log   - 10:52:40] Synchronizing files with server ...
[Log   - 10:52:40] Push: .editorconfig upload
[Error - 10:52:40] Error in synchronizing files: upload : '.editorconfig' :  : Error: {"size":0,"timeout":0}
    at CLWebAppApi.<anonymous> (/Users/user/.vscode/extensions/cloudlatex.cloudlatex-2.0.0/node_modules/cloudlatex-cli-plugin/dist/src/backend/cloudlatex/webAppApi.js:158:23)
    at Generator.next (<anonymous>)
    at fulfilled (/Users/user/.vscode/extensions/cloudlatex.cloudlatex-2.0.0/node_modules/cloudlatex-cli-plugin/dist/src/backend/cloudlatex/webAppApi.js:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

.editorconfigファイルを削除することで同期は成功します。この他にも.から始まる任意のファイルがプロジェクトのルートにあると同期が失敗するようです(.testなどを試しました) ローカルでLatexを扱う際には他の拡張機能を使うことで非常に便利に編集ができるのですがそれらの拡張機能の設定ファイルが.から始まる名前を採用している場合、同様に同期に失敗してしまいます。

これはCloudLatex自体でドットで始まる名前は使えない(.latexmkrc除く)ことが原因と考えられます。

解決策としては、これらの.から始まる任意のローカルのファイルについてアップロードを行わないように変更する、もしくはアップロードを行わないように拡張機能を制御する.cloudlatexignoreのようなファイル(gitにおける.gitignoreやdockerにおける.dockerignoreと同様に動作する)を新たに策定することなどが考えられます。

解決策やご意見を伺えないでしょうか?よろしくお願いいたします。

moritanian commented 1 year ago

現状、拡張機能の内部では以下でアップロード対象の除外を行っているのですが、Cloudlatex 自体の制約と一致していないのが原因でした。 https://github.com/cloudlatex-team/cloudlatex-cli-plugin/blob/main/src/latexApp.ts#L61-L85 (VSCode に依存する処理はcloudlatex-vscode-extension に、 VSCode に依存しない処理はcloudlatex-cli-plugin に分かれています)

簡単な解決方法としては、拡張機能内 (cloudlatex-cli-plugin 内)で . から始まるファイル(.latexmkrc 以外)もアップロードしないようにすることが考えられます。

一方でサーバにアップロード、コンパイルするファイルを制御したいという需要もありそうなので除外ファイルを設定できる仕組みを用意してそのデフォルト値として . から始まるファイルなどを含めて置くとよさそうです。 おっしゃる通り.cloudlatexignore など専用のファイルを策定するのも考えられますが、VSCodeの仕組みにのっかりVSCodeの設定値として設定できる方がVSCode のプラグインとして好ましいと思いますがどうでしょう。 https://code.visualstudio.com/docs/getstarted/settings (VSCode のLaTeX プラグインとして広く利用される latex-workshop でもVCSCode の設定項目として対象のファイルを制御できるようになっています https://github.com/James-Yu/LaTeX-Workshop/wiki/Compile#latex-workshoplatexwatchfilesignore )

hi120ki commented 1 year ago

ありがとうございます。 解決策の後者について、ご指摘の通り.cloudlatexignoreよりもlatex-workshopに従ってVSCodeの設定値で設定するほうが良さそうだと感じます。

今後この拡張機能を使うユーザーのことを考えますと、cloudlatex-cli-plugin内の制約をCloudlatex自体の制約に合わせ同様のエラーが出ないようにしつつ、かつVSCodeの設定値でアップロードしないディレクトリやファイルを指定することでユーザーの利便性とCloudlatexサービスの保存容量や通信コストの削減ができれば嬉しいかと思います。

最終的な判断はコントリビューターの方におまかせしますが、1ユーザーの意見として参考にしていただければありがたいです。 よろしくお願いいたします。

moritanian commented 1 year ago

ご意見ありがとうございます。 本件は VSCode の設定値で制御する方法で私が対応しようと思います。

また、本件以外にも機能改善の提案やPR を歓迎していますのでよろしくお願いします!