diff --git a/.gitattributes b/.gitattributes index 03321ea..dd7c09f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,22 +1,7 @@ * text=auto -# Large binary assets and ROS data should be stored with Git LFS. -*.pcd filter=lfs diff=lfs merge=lfs -text -*.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. +# Binary assets and ROS data are committed as ordinary Git objects because the +# current internal Git server does not expose a usable Git LFS endpoint. *.png binary *.jpg binary *.jpeg binary diff --git a/docs/git-upload-prep.md b/docs/git-upload-prep.md index f34ddc2..ae2721e 100644 --- a/docs/git-upload-prep.md +++ b/docs/git-upload-prep.md @@ -5,8 +5,8 @@ ## 已处理 - 已新增根目录 `.gitignore`,排除 colcon 构建产物、Python 缓存、日志、IDE 数据库和本地助手状态目录。 -- 已新增根目录 `.gitattributes`,将 `.pcd`、`.db3`、`.bag`、`.mcap`、模型文件、静态库、动态库、压缩包和较大的 GIF 标记为 Git LFS 文件。 -- 已确认本机安装了 Git LFS:`git-lfs/3.0.2`。 +- 已新增根目录 `.gitattributes`,将 `.pcd`、`.db3`、`.bag`、`.mcap`、模型文件、静态库、动态库、压缩包和较大的 GIF 标记为普通 Git 二进制文件。 +- 远端 Git LFS 接口不可用,已将原 LFS 指针转回普通 Git 对象。 - 已确认当前未发现 `build/`、`install/`、`log/` 目录。 - 已备份并删除无效/嵌套 `.git/` 元数据,备份目录为 `/tmp/farui_git_metadata_backup_20260605_132216`。 - 已初始化根目录 Git 仓库,当前分支为 `main`。 @@ -17,14 +17,14 @@ - 根目录只有一个有效 `.git/`。 - 工作区当前为 clean 状态。 -- 当前未配置远端仓库。 -- 当前有 26 个文件由 Git LFS 管理。 +- 当前远端仓库为 `http://git.fairylandtech.com/whut/FaRui_Campus_ADS.git`。 +- 当前没有文件由 Git LFS 管理。 ## 大文件 当前最大本地生成物是 `.vscode/browse.vc.db`,约 867 MB,已通过 `.gitignore` 排除。 -仍然建议使用 Git LFS 管理以下类型的大文件: +当前内部 Git 服务器没有可用的 LFS 接口,因此以下类型的大文件以普通 Git 二进制文件提交: - 点云和地图测试数据:`*.pcd` - ROS bag 数据:`*.db3`、`*.bag`、`*.mcap` @@ -83,12 +83,5 @@ git remote add origin <远端仓库地址> git push -u origin main ``` -如果远端平台需要 Git LFS,请确认远端仓库已启用 LFS,并在推送前执行: - -```bash -git lfs install -git lfs ls-files -``` - 如果以后决定改成 submodule 管理第三方依赖,需要从当前单体仓库方式重新设计 `.gitmodules`,并替换对应目录的 vendored source。 diff --git a/upload_git.sh b/upload_git.sh index 73154af..4c026cd 100644 --- a/upload_git.sh +++ b/upload_git.sh @@ -8,7 +8,7 @@ # Notes: # - If origin already exists, -r/--remote can be omitted. # - 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 @@ -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." cd "$REPO_ROOT" -if ! git lfs version >/dev/null 2>&1; then - die "Git LFS is not installed. Install git-lfs before pushing this workspace." +LFS_COUNT="0" +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 -git lfs install --local >/dev/null - if [[ -z "$BRANCH" ]]; then BRANCH="$(git branch --show-current)" fi @@ -149,7 +151,7 @@ else log "Working tree is clean." 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'." git push -u "$REMOTE_NAME" "$BRANCH"