Skip to content

Commit d219049

Browse files
committed
chore: use git-lfs for lancedb archive
1 parent 042aef3 commit d219049

10 files changed

Lines changed: 86 additions & 5 deletions

File tree

.git-ai/lancedb.tar.gz

-12.6 KB
Binary file not shown.

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.git-ai/lancedb.tar.gz filter=lfs diff=lfs merge=lfs -text

.githooks/post-checkout

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ if [ ! -f ".git-ai/lancedb.tar.gz" ]; then
1111
exit 0
1212
fi
1313

14+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
15+
if [ "$LFS_REQUIRED" = "1" ]; then
16+
if git lfs version >/dev/null 2>&1; then
17+
git lfs post-checkout "$@"
18+
else
19+
echo "git-ai: repository requires git-lfs to fetch .git-ai/lancedb.tar.gz; please install git-lfs." 1>&2
20+
exit 0
21+
fi
22+
fi
23+
1424
if ! command -v git-ai >/dev/null 2>&1; then
1525
exit 0
1626
fi
1727

1828
git-ai ai unpack -p "$ROOT" >/dev/null
19-

.githooks/post-merge

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ if [ ! -f ".git-ai/lancedb.tar.gz" ]; then
1111
exit 0
1212
fi
1313

14+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
15+
if [ "$LFS_REQUIRED" = "1" ]; then
16+
if git lfs version >/dev/null 2>&1; then
17+
git lfs post-merge "$@"
18+
else
19+
echo "git-ai: repository requires git-lfs to fetch .git-ai/lancedb.tar.gz; please install git-lfs." 1>&2
20+
exit 0
21+
fi
22+
fi
23+
1424
if ! command -v git-ai >/dev/null 2>&1; then
1525
exit 0
1626
fi
1727

1828
git-ai ai unpack -p "$ROOT" >/dev/null
19-

.githooks/pre-push

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,12 @@ if [ -n "$CHANGED" ]; then
1818
echo "git-ai: .git-ai/lancedb.tar.gz changed during pre-push; please commit it before pushing." 1>&2
1919
exit 1
2020
fi
21+
22+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
23+
if [ "$LFS_REQUIRED" = "1" ]; then
24+
if ! git lfs version >/dev/null 2>&1; then
25+
echo "git-ai: repository requires git-lfs to push LFS objects; please install git-lfs." 1>&2
26+
exit 2
27+
fi
28+
git lfs pre-push "$@"
29+
fi

README.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,29 @@ git-ai ai hooks status
102102
- `pre-commit`:自动 `index --overwrite` + `pack`,并把 `.git-ai/meta.json``.git-ai/lancedb.tar.gz` 加入暂存区。
103103
- `pre-push`:再次 `pack`,若归档发生变化则阻止 push,提示先提交归档文件。
104104
- `post-checkout` / `post-merge`:若存在 `.git-ai/lancedb.tar.gz` 则自动 `unpack`
105-
- 如需使用 git-lfs 管理归档文件,可手动执行:`git lfs track .git-ai/lancedb.tar.gz`(或运行 `git-ai ai pack --lfs`)。
105+
106+
## Git LFS(推荐,用于 .git-ai/lancedb.tar.gz)
107+
108+
为了避免把较大的索引归档直接存进 Git 历史,推荐对 `.git-ai/lancedb.tar.gz` 启用 Git LFS。
109+
110+
### 开启(一次性)
111+
112+
```bash
113+
git lfs install
114+
git lfs track ".git-ai/lancedb.tar.gz"
115+
git add .gitattributes
116+
git commit -m "chore: track lancedb archive via git-lfs"
117+
```
118+
119+
也可以用 `git-ai` 触发(仅在已安装 git-lfs 的情况下生效):
120+
121+
```bash
122+
git-ai ai pack --lfs
123+
```
124+
125+
### 克隆/切分支后(如果未自动拉取 LFS)
126+
如果你环境设置了 `GIT_LFS_SKIP_SMUDGE=1`,或发现 `.git-ai/lancedb.tar.gz` 不是有效的 gzip 文件:
127+
128+
```bash
129+
git lfs pull
130+
```

assets/hooks/post-checkout

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ if [ ! -f ".git-ai/lancedb.tar.gz" ]; then
1111
exit 0
1212
fi
1313

14+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
15+
if [ "$LFS_REQUIRED" = "1" ]; then
16+
if git lfs version >/dev/null 2>&1; then
17+
git lfs post-checkout "$@"
18+
else
19+
echo "git-ai: repository requires git-lfs to fetch .git-ai/lancedb.tar.gz; please install git-lfs." 1>&2
20+
exit 0
21+
fi
22+
fi
23+
1424
if ! command -v git-ai >/dev/null 2>&1; then
1525
exit 0
1626
fi
1727

1828
git-ai ai unpack -p "$ROOT" >/dev/null
19-

assets/hooks/post-merge

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ if [ ! -f ".git-ai/lancedb.tar.gz" ]; then
1111
exit 0
1212
fi
1313

14+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
15+
if [ "$LFS_REQUIRED" = "1" ]; then
16+
if git lfs version >/dev/null 2>&1; then
17+
git lfs post-merge "$@"
18+
else
19+
echo "git-ai: repository requires git-lfs to fetch .git-ai/lancedb.tar.gz; please install git-lfs." 1>&2
20+
exit 0
21+
fi
22+
fi
23+
1424
if ! command -v git-ai >/dev/null 2>&1; then
1525
exit 0
1626
fi
1727

1828
git-ai ai unpack -p "$ROOT" >/dev/null
19-

assets/hooks/pre-push

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,12 @@ if [ -n "$CHANGED" ]; then
1818
echo "git-ai: .git-ai/lancedb.tar.gz changed during pre-push; please commit it before pushing." 1>&2
1919
exit 1
2020
fi
21+
22+
LFS_REQUIRED="$(git check-attr filter -- .git-ai/lancedb.tar.gz 2>/dev/null | grep -q 'filter: lfs' && echo 1 || echo 0)"
23+
if [ "$LFS_REQUIRED" = "1" ]; then
24+
if ! git lfs version >/dev/null 2>&1; then
25+
echo "git-ai: repository requires git-lfs to push LFS objects; please install git-lfs." 1>&2
26+
exit 2
27+
fi
28+
git lfs pre-push "$@"
29+
fi

docs/wiki/archive-and-lfs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ git-ai ai unpack
1313
如果仓库安装了 git-lfs,推荐对 `.git-ai/lancedb.tar.gz` 使用 LFS:
1414

1515
```bash
16+
git lfs install
1617
git lfs track ".git-ai/lancedb.tar.gz"
1718
git add .gitattributes
1819
git commit -m "track lancedb archive via lfs"

0 commit comments

Comments
 (0)