https://github.com/jacoblincool/dlgit
Download part of a git repository without wasting your bandwidth.
https://github.com/jacoblincool/dlgit
api cli download git
Last synced: 3 months ago
JSON representation
Download part of a git repository without wasting your bandwidth.
- Host: GitHub
- URL: https://github.com/jacoblincool/dlgit
- Owner: JacobLinCool
- License: mit
- Created: 2022-05-12T04:21:04.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-15T14:56:05.000Z (over 2 years ago)
- Last Synced: 2025-03-18T12:22:54.517Z (over 1 year ago)
- Topics: api, cli, download, git
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/dlgit
- Size: 410 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dlgit
Download part of a git repository without wasting your bandwidth.
[NPM Package](https://www.npmjs.com/package/dlgit) | [GitHub Repository](https://github.com/JacobLinCool/dlgit) | [Documentation](https://jacoblincool.github.io/dlgit/)

## Why & How
`dlgit` can download only part of a git repository and reduce the time and bandwidth you spend downloading the whole repository.
`dlgit` does the followings:
1. serve the files from the local cache if they are available.
2. `git clone` with optimized options.
- `--filter=blob:none` to avoid downloading all file contents.
- `--no-checkout` to avoid automatically checking out the files.
- `--depth=1` to avoid downloading history of the repository.
3. setup `sparse-checkout` to only download the files that are required.
4. `git checkout` to check out the files you need.
5. remove `.git` directory to avoid messing up the files.
6. cache the files in the local cache.
## Usage
### Install Globally
```sh
npm i -g dlgit
dlgit --help
# dg --help
# this should work as well since dg is the alias of dlgit
```
```sh
dg --sub /packages/create-vite/template-vue-ts "vitejs/vite#v2.9.9"
# download the files in the subdirectory `packages/create-vite/template-vue-ts` in
# tag `v2.9.9` of the GitHub repository `vitejs/vite`
```
### Just Run
```sh
npx dlgit --help
```
```sh
npx dlgit --sub /public "https://gitlab.noj.tw/noj/codebase/frontend.git#readme"
# download the files in the subdirectory `public` in
# branch `readme` of the repository `https://gitlab.noj.tw/noj/codebase/frontend.git`
```
## Help
```sh
❯ dlgit -h
Usage: dlgit [options] [command]
Arguments:
remote Remote repository to download from (e.g. Open-OJ/3OJ#gh-pages)
Options:
-V, --version output the version number
-s, --sub Subdirectory to download
-c, --cache Cache directory
-T, --ttl Cache TTL (ms)
-t, --to Destination directory
-f, --force Overwrite existing directory if it exists
-h, --help display help for command
Commands:
clear-cache [options] Clear the cache
parse Parse remote repository location
```
## API
It supports both `ESM` and `CJS` modules.
```ts
import Dlgit from "dlgit";
const dlgit = new Dlgit();
dlgit.dl("Open-OJ/3OJ#gh-pages", {
sub: "problems",
cache: "cache-dir",
ttl: 1000 * 60 * 60 * 24,
to: "destination-dir"
});
// all options are optional
```