用途
legalize-es 是一个 Git 仓库,把西班牙立法以 Markdown 文件的形式进行版本化管理。仓库收录 8600 多部西班牙法律,每一次立法改革都作为一次 Git 提交记录下来,改革历史可追溯至 1960 年。每部法律是一个单独的 .md 文件,以 BOE 标识符命名,例如西班牙宪法对应 BOE-A-1978-31229.md。
该技能适合需要查询、浏览和分析西班牙立法的场景,尤其是希望利用 Git 的版本控制能力来追踪法律沿革、对比不同版本差异、检索特定条文或按法律类型筛选的用户。
主要能力
- 使用 grep 对所有法律进行全文检索
- 使用 git diff 获取某部法律任意两个版本之间的精确差异
- 使用 git log 查看某部法律的全部改革时间线
- 使用 git show / git checkout 查看任意时间点的法律历史状态
- 通过 YAML frontmatter 按法律层级(rango)和状态(estado)筛选
- 支持 Shell 脚本与 Python 进行程序化访问
安装与文件结构
克隆完整仓库(包含全部历史):
git clone https://github.com/legalize-dev/legalize-es.git
cd legalize-es
如果只需要当前状态,可使用浅克隆(速度更快):
git clone --depth 1 https://github.com/legalize-dev/legalize-es.git
cd legalize-es
所有法律文件位于 spain/ 目录下,例如:
spain/
├── BOE-A-1978-31229.md # Constitución Española
├── BOE-A-1995-25444.md # Código Penal
├── BOE-A-2015-11430.md # Estatuto de los Trabajadores
├── BOE-A-2000-323.md # Ley de Enjuiciamiento Civil
└── ... (8,600+ laws)
元数据
每个文件开头都有结构化 YAML frontmatter,例如:
---
titulo: "Constitución Española"
identificador: "BOE-A-1978-31229"
pais: "es"
rango: "constitucion"
fecha_publicacion: "1978-12-29"
ultima_actualizacion: "2024-02-17"
estado: "vigente"
fuente: "https://www.boe.es/eli/es/c/1978/12/27/(1)"
---
rango 取值包括:constitucion、ley-organica、ley、real-decreto-ley、real-decreto-legislativo。
estado 取值包括:vigente(现行有效)、derogado(已废止)。
使用方式
按主题查找法律:
grep -rl "trabajo" spain/ | head -20
grep -rl "huelga" spain/
grep -rli "protección de datos" spain/
读取特定条文:
grep -A 20 "Artículo 18" spain/BOE-A-1978-31229.md
grep -B 10 -A 30 "Artículo 135" spain/BOE-A-1978-31229.md
按 BOE 标识符查找:
cat spain/BOE-A-1995-25444.md
ls spain/ | grep "BOE-A-1995"
按法律类型筛选:
grep -rl 'rango: "ley-organica"' spain/
grep -rl 'estado: "vigente"' spain/
grep -rl 'estado: "derogado"' spain/
查看某部法律的全部改革:
git log --oneline -- spain/BOE-A-1978-31229.md
git log --format="%h %ad %s" --date=short -- spain/BOE-A-1978-31229.md
git log -- spain/BOE-A-1978-31229.md
对比两个版本:
git show 6660bcf -- spain/BOE-A-1978-31229.md
git diff 6660bcf^..6660bcf -- spain/BOE-A-1978-31229.md
git diff $(git rev-list -1 --before="2011-01-01" HEAD) \
$(git rev-list -1 --before="2012-01-01" HEAD) \
-- spain/BOE-A-1978-31229.md
读取历史版本:
git show $(git rev-list -1 --before="2010-01-01" HEAD):spain/BOE-A-1978-31229.md
git show abc1234:spain/BOE-A-1978-31229.md
查找特定文本的增删:
git log -S "estabilidad presupuestaria" -- spain/BOE-A-1978-31229.md
git log -G "límite de déficit estructural" --oneline -- spain/BOE-A-1978-31229.md
程序化访问
资料提供了 Shell 与 Python 示例,包括:提取所有法律标题、查找某日期之后更新的法律、解析 frontmatter、通过 Git 获取改革历史、对比两个版本、跨所有法律搜索、导出法律为 JSON 等。
常见工作流
- 研究某个法律主题:先用 grep 找到相关法律,再获取标题,定位主要法律
- 追踪某次具体改革:用 git log -S 找到引入某文本的提交,用 git show 查看具体改动,读取提交信息获取官方来源
- 将法律导出为 JSON:解析 frontmatter 并写入 laws_index.json
故障排除
- 仓库过大无法克隆:使用浅克隆
git clone --depth 1或限制历史深度--depth 50 - 浅克隆后 git log 无历史:使用
git fetch --deepen=100或git fetch --unshallow - Windows 编码问题:设置
git config core.quotepath false与git config i18n.logoutputencoding utf-8,Python 中始终以 encoding='utf-8' 打开文件 - 不知道 BOE ID 时:按部分标题进行不区分大小写搜索
数据来源与许可
- 立法内容:公有领域,来源于 BOE Open Data API
- 仓库结构、元数据、工具:MIT License
- 每部法律的官方来源:见各文件 frontmatter 中的 fuente 字段
- 属于 Legalize 多国项目的一部分
- 即将推出:legalize.dev 上的程序化 API
限制
资料未提供关于收费、价格、平台支持范围、性能指标或法律内容准确性的保证信息。使用前请以官方来源为准。