{"id":28802959,"url":"https://github.com/tmpmachine/plain-js-git","last_synced_at":"2026-04-26T08:34:06.919Z","repository":{"id":228952698,"uuid":"775349995","full_name":"tmpmachine/plain-js-git","owner":"tmpmachine","description":"Online Git client. Minimal Git client for the web using isomorphic-git with File System Access API functionality.","archived":false,"fork":false,"pushed_at":"2024-11-16T01:46:22.000Z","size":56,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-16T02:24:51.099Z","etag":null,"topics":["git","javascript","javascript-vanilla","progressive-web-apps"],"latest_commit_sha":null,"homepage":"https://tmpmachine.github.io/plain-js-git/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmpmachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-21T08:19:18.000Z","updated_at":"2024-11-16T01:46:26.000Z","dependencies_parsed_at":"2024-11-16T02:24:16.077Z","dependency_job_id":"0691b2b0-e856-4a87-a04f-a53ff7a4a24a","html_url":"https://github.com/tmpmachine/plain-js-git","commit_stats":null,"previous_names":["tmpmachine/isomorphic-git-example","tmpmachine/iso-git"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tmpmachine/plain-js-git","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmpmachine%2Fplain-js-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmpmachine%2Fplain-js-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmpmachine%2Fplain-js-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmpmachine%2Fplain-js-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmpmachine","download_url":"https://codeload.github.com/tmpmachine/plain-js-git/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmpmachine%2Fplain-js-git/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260518715,"owners_count":23021323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","javascript","javascript-vanilla","progressive-web-apps"],"created_at":"2025-06-18T08:30:47.111Z","updated_at":"2026-04-26T08:34:06.912Z","avatar_url":"https://github.com/tmpmachine.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# plain-js-git\nMinimal git client for the web using [isomorphic-git](https://isomorphic-git.org/), with [File System Access API](https://developer.chrome.com/docs/capabilities/web-apis/file-system-access) functionality. Remote actions are not included (e.g. clone, push, pull).\n\nUseful for quickly managing local git repository where git client is not installed or loading IDE with integrated git client takes time (e.g. VSCode on low-end laptops and Chromebooks).\n\n# Limitations\n- Slow repository read-write due to having to communicate back and forth between File System Access (FSA) API and lightning-fs. FSA in still a WIP in lightning-fs.\n- Can't set commit author, yet.\n- No remote actions (clone, push, pull, etc.).\n\n# Troubleshooting\n## Line Break Issue\nWhen working on Windows OS, cloned repository files will likely to have a different line break type (CLRF `\\r\\n`, LF `\\n`) from the remote. This causing the files to be marked as modified.\n\nI haven't found any solid solution but you can try to configure git and setup a `.gitattributes` file. **It's required to have git installed on your system**.\n\n```bash\ngit config --global core.autocrlf input\ngit rm --cached -r .\ngit reset --hard\n```\nReferences:\n- https://stackoverflow.com/a/29888735\n- https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/#a-simple-gitattributes-config\n\n\n# How To\n\n## Get StatusMatrix\n```\nawait compoGit.TaskGetStatusMatrix()\n```\n\n# Development\n\n## Updating the Page\nI use [divless HTML](https://github.com/tmpmachine/divless-html) format. If possible, edit the `.divless/index.html` file instead of editing `index.html` directly. You'll need to install the [Divless HTML VS Code extension](https://marketplace.visualstudio.com/items?itemName=PacoLemon.divlesshtml) to convert the format automatically upon saving.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmpmachine%2Fplain-js-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmpmachine%2Fplain-js-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmpmachine%2Fplain-js-git/lists"}