Disable LFS tracking for internal Git remote

This commit is contained in:
li-shihao-code
2026-06-05 14:20:30 +08:00
parent 65b6a92c2a
commit ba0b6a5c87
3 changed files with 15 additions and 35 deletions
+2 -17
View File
@@ -1,22 +1,7 @@
* text=auto * text=auto
# Large binary assets and ROS data should be stored with Git LFS. # Binary assets and ROS data are committed as ordinary Git objects because the
*.pcd filter=lfs diff=lfs merge=lfs -text # current internal Git server does not expose a usable Git LFS endpoint.
*.db3 filter=lfs diff=lfs merge=lfs -text
*.bag filter=lfs diff=lfs merge=lfs -text
*.mcap filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.engine filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
# Common binary media.
*.png binary *.png binary
*.jpg binary *.jpg binary
*.jpeg binary *.jpeg binary
+5 -12
View File
@@ -5,8 +5,8 @@
## 已处理 ## 已处理
- 已新增根目录 `.gitignore`,排除 colcon 构建产物、Python 缓存、日志、IDE 数据库和本地助手状态目录。 - 已新增根目录 `.gitignore`,排除 colcon 构建产物、Python 缓存、日志、IDE 数据库和本地助手状态目录。
- 已新增根目录 `.gitattributes`,将 `.pcd``.db3``.bag``.mcap`、模型文件、静态库、动态库、压缩包和较大的 GIF 标记为 Git LFS 文件。 - 已新增根目录 `.gitattributes`,将 `.pcd``.db3``.bag``.mcap`、模型文件、静态库、动态库、压缩包和较大的 GIF 标记为普通 Git 二进制文件。
- 已确认本机安装了 Git LFS`git-lfs/3.0.2` - 远端 Git LFS 接口不可用,已将原 LFS 指针转回普通 Git 对象
- 已确认当前未发现 `build/``install/``log/` 目录。 - 已确认当前未发现 `build/``install/``log/` 目录。
- 已备份并删除无效/嵌套 `.git/` 元数据,备份目录为 `/tmp/farui_git_metadata_backup_20260605_132216` - 已备份并删除无效/嵌套 `.git/` 元数据,备份目录为 `/tmp/farui_git_metadata_backup_20260605_132216`
- 已初始化根目录 Git 仓库,当前分支为 `main` - 已初始化根目录 Git 仓库,当前分支为 `main`
@@ -17,14 +17,14 @@
- 根目录只有一个有效 `.git/` - 根目录只有一个有效 `.git/`
- 工作区当前为 clean 状态。 - 工作区当前为 clean 状态。
- 当前未配置远端仓库。 - 当前远端仓库`http://git.fairylandtech.com/whut/FaRui_Campus_ADS.git`
- 当前有 26 个文件由 Git LFS 管理。 - 当前有文件由 Git LFS 管理。
## 大文件 ## 大文件
当前最大本地生成物是 `.vscode/browse.vc.db`,约 867 MB,已通过 `.gitignore` 排除。 当前最大本地生成物是 `.vscode/browse.vc.db`,约 867 MB,已通过 `.gitignore` 排除。
仍然建议使用 Git LFS 管理以下类型的大文件 当前内部 Git 服务器没有可用的 LFS 接口,因此以下类型的大文件以普通 Git 二进制文件提交
- 点云和地图测试数据:`*.pcd` - 点云和地图测试数据:`*.pcd`
- ROS bag 数据:`*.db3``*.bag``*.mcap` - ROS bag 数据:`*.db3``*.bag``*.mcap`
@@ -83,12 +83,5 @@ git remote add origin <远端仓库地址>
git push -u origin main git push -u origin main
``` ```
如果远端平台需要 Git LFS,请确认远端仓库已启用 LFS,并在推送前执行:
```bash
git lfs install
git lfs ls-files
```
如果以后决定改成 submodule 管理第三方依赖,需要从当前单体仓库方式重新设计 如果以后决定改成 submodule 管理第三方依赖,需要从当前单体仓库方式重新设计
`.gitmodules`,并替换对应目录的 vendored source。 `.gitmodules`,并替换对应目录的 vendored source。
+8 -6
View File
@@ -8,7 +8,7 @@
# Notes: # Notes:
# - If origin already exists, -r/--remote can be omitted. # - If origin already exists, -r/--remote can be omitted.
# - If the working tree has changes, provide -m/--message to commit them. # - If the working tree has changes, provide -m/--message to commit them.
# - Git LFS must be available on both local machine and remote hosting service. # - This repository currently does not require Git LFS on the remote.
set -euo pipefail set -euo pipefail
@@ -91,12 +91,14 @@ command -v git >/dev/null 2>&1 || die "git is not installed."
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" || die "Not inside a Git repository." REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" || die "Not inside a Git repository."
cd "$REPO_ROOT" cd "$REPO_ROOT"
if ! git lfs version >/dev/null 2>&1; then LFS_COUNT="0"
die "Git LFS is not installed. Install git-lfs before pushing this workspace." if git lfs version >/dev/null 2>&1; then
git lfs install --local >/dev/null
LFS_COUNT="$(git lfs ls-files | wc -l | tr -d ' ')"
else
warn "Git LFS is not installed. This is acceptable only when no LFS files are tracked."
fi fi
git lfs install --local >/dev/null
if [[ -z "$BRANCH" ]]; then if [[ -z "$BRANCH" ]]; then
BRANCH="$(git branch --show-current)" BRANCH="$(git branch --show-current)"
fi fi
@@ -149,7 +151,7 @@ else
log "Working tree is clean." log "Working tree is clean."
fi fi
log "LFS files tracked: $(git lfs ls-files | wc -l | tr -d ' ')" log "LFS files tracked: $LFS_COUNT"
log "Pushing branch '$BRANCH' to '$REMOTE_NAME'." log "Pushing branch '$BRANCH' to '$REMOTE_NAME'."
git push -u "$REMOTE_NAME" "$BRANCH" git push -u "$REMOTE_NAME" "$BRANCH"