GitMap 技能
ArcGIS 网络地图的版本控制 — 作为原生 OpenClaw 工具公开。
概述
GitMap 为 ArcGIS Online 和 Enterprise Portal 网络地图提供类似 Git 的版本控制。此技能将 gitmap CLI 包装为轻量级子进程调用,将分支、提交、差异、推送/拉取和地图发现作为可调用工具公开。
8 个工具 | 轻量 CLI 包装器 | 无本地数据库 | 要求:gitmap-core Python 包
先决条件
安装 GitMap Core
pip install gitmap-core
配置凭据
设置以下环境变量:
export PORTAL_URL="https://your-org.maps.arcgis.com"
export ARCGIS_USERNAME="your_username"
export ARCGIS_PASSWORD="your_password"
安全提示: 如果可能,优先使用有范围的 API 令牌而不是明文密码。
必需的环境变量
- PORTAL_URL:您的 ArcGIS Portal 或 AGOL URL(例如,
https://myorg.maps.arcgis.com) - ARCGIS_USERNAME:Portal 用户名
- ARCGIS_PASSWORD:Portal 密码(优先使用有范围的 API 令牌而不是明文密码)
工具
发现与状态
gitmap_list— 从 Portal 列出可用的网络地图(带有可选过滤器)gitmap_status— 显示本地 GitMap 仓库的工作树状态gitmap_log— 查看仓库的提交历史
版本控制
gitmap_commit— 使用消息提交当前地图状态gitmap_branch— 列出或创建仓库中的分支gitmap_diff— 显示提交或分支之间的更改
Portal 同步
gitmap_push— 将已提交的更改推送到 ArcGIS Portalgitmap_pull— 从 ArcGIS Portal 拉取最新地图
工具参考
gitmap_list
在 Portal 中查找网络地图。
gitmap_list(
query=None, # 搜索查询(例如,"title:MyMap")
owner=None, # 按所有者用户名过滤
tag=None, # 按标签过滤
max_results=50, # 返回的最大结果数
portal_url=None, # Portal URL(或使用 PORTAL_URL 环境变量)
username=None, # Portal 用户名(或 ARCGIS_USERNAME 环境变量)
password=None, # Portal 密码(或 ARCGIS_PASSWORD 环境变量)
cwd=None, # 工作目录(默认:主目录)
)
gitmap_status
显示仓库状态。
gitmap_status(
cwd, # GitMap 仓库的路径(必需)
)
gitmap_commit
提交当前更改。
gitmap_commit(
message, # 提交消息(必需)
cwd, # GitMap 仓库的路径(必需)
author=None, # 覆盖提交作者
)
gitmap_branch
列出或创建分支。
gitmap_branch(
cwd, # GitMap 仓库的路径(必需)
name=None, # 要创建的分支名称(省略则列出)
delete=False, # 删除指定分支
)
gitmap_diff
显示版本之间的更改。
gitmap_diff(
cwd, # GitMap 仓库的路径(必需)
branch=None, # 与此分支比较
commit=None, # 与此提交哈希比较
)
gitmap_push
将更改推送到 Portal。
gitmap_push(
cwd, # GitMap 仓库的路径(必需)
branch=None, # 要推送的分支(默认:当前分支)
portal_url=None, # Portal URL
username=None, # Portal 用户名
password=None, # Portal 密码
)
gitmap_pull
从 Portal 拉取更改。
gitmap_pull(
cwd, # GitMap 仓库的路径(必需)
branch=None, # 要拉取的分支(默认:当前分支)
portal_url=None, # Portal URL
username=None, # Portal 用户名
password=None, # Portal 密码
)
gitmap_log
查看提交历史。
gitmap_log(
cwd, # GitMap 仓库的路径(必需)
branch=None, # 要显示日志的分支
limit=None, # 要显示的最大提交数
)
使用示例
发现地图并克隆
# 查找用户拥有的地图
gitmap_list(owner="john.doe", max_results=20)
# → 返回包含项目 ID 的地图表
# 然后手动克隆:
# cd ~/maps && gitmap clone <item_id>
典型的编辑 → 提交 → 推送循环
# 检查更改内容
gitmap_status(cwd="~/maps/MyWebMap")
# 提交更改
gitmap_commit(message="Updated layer symbology", cwd="~/maps/MyWebMap")
# 推送到 Portal
gitmap_push(cwd="~/maps/MyWebMap")
功能分支工作流
# 列出分支
gitmap_branch(cwd="~/maps/MyWebMap")
# 创建功能分支
gitmap_branch(name="feature/new-basemap", cwd="~/maps/MyWebMap")
# 编辑后,提交并推送功能分支
gitmap_commit(message="Added satellite basemap", cwd="~/maps/MyWebMap")
gitmap_push(cwd="~/maps/MyWebMap", branch="feature/new-basemap")
查看历史记录
# 最近的提交
gitmap_log(cwd="~/maps/MyWebMap", limit=10)
# 自 main 分支以来发生了什么变化?
gitmap_diff(cwd="~/maps/MyWebMap", branch="main")
服务器
HTTP 服务器位于 localhost:7400(运行时):
python server.py
端点:
POST /tools/{tool_name}— 使用 JSON 正文调用工具GET /health— 健康检查
安装
安装命令:
pip install gitmap-core
该技能直接使用 gitmap_core Python 包进行 API 访问。
注意事项与已知限制
- 大多数命令需要工作目录 — GitMap 仓库像 Git 一样是基于目录的。
- Portal 凭据 可以通过每次调用传递或通过环境变量(PORTAL_URL, ARCGIS_USERNAME, ARCGIS_PASSWORD)设置。
gitmap list不需要本地仓库 — 它直接查询 Portal。- 输出是原始 CLI 文本 — 在可能的情况下进行轻度解析以获取结构化响应。
- 此技能不实现
clone、init、merge、checkout、setup或context-repos— 对于这些操作,请直接调用 CLI。
相关
- GitMap 项目:https://github.com/14-TR/gitmap