mirror of
https://github.com/This-weiyuqing/mi-fitness-health.git
synced 2026-10-18 03:03:49 +08:00
保存 NAS 健康系统 UI7 代码与本机维护基线
This commit is contained in:
1 parent
1767b4921a
commit
8546ba23ff
80 files changed
+4984
-381
No files matched your search
@@ -0,0 +1,39 @@
|
||||
"""主仓库产品代码同步到旧工作区;冲突时停止,不删除文件。"""
|
||||
import hashlib
|
||||
import json
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
root=Path(__file__).resolve().parents[1]
|
||||
config=root/'.workspace-sync.local.json'
|
||||
if not config.exists():
|
||||
raise SystemExit('此电脑尚未配置兼容同步;请保留源代码并核对目标目录')
|
||||
settings=json.loads(config.read_text(encoding='utf-8'))
|
||||
target=Path(settings['target']).resolve()
|
||||
expected=Path('C:/Users/35861/Documents/Codex/2026-10-16/nas-mi-fitness-health-connect-aurboda/work/mi-fitness-mcp-cn').resolve()
|
||||
if target!=expected or not (target/'.git').is_dir():
|
||||
raise SystemExit('同步目标不符或不是预期Git工作区,停止')
|
||||
|
||||
files=[]
|
||||
for directory in ['src','tests']:
|
||||
files.extend(p for p in (root/directory).rglob('*') if p.is_file() and '__pycache__' not in p.parts and p.suffix not in {'.pyc','.pyo'})
|
||||
for name in ['pyproject.toml','README.md','CHANGELOG.md','SECURITY.md']:
|
||||
if (root/name).is_file():files.append(root/name)
|
||||
updates=[]
|
||||
for source in files:
|
||||
name=source.relative_to(root).as_posix();destination=target/name
|
||||
if source.is_symlink() or destination.is_symlink() or not destination.resolve().is_relative_to(target):
|
||||
raise SystemExit('拒绝同步符号链接或目标目录之外的文件:'+name)
|
||||
new=hashlib.sha256(source.read_bytes()).hexdigest()
|
||||
actual=hashlib.sha256(destination.read_bytes()).hexdigest() if destination.exists() else None
|
||||
previous=settings['hashes'].get(name)
|
||||
if actual!=new and actual!=previous:
|
||||
raise SystemExit('旧工作区存在另行修改,未写入任何文件:'+name)
|
||||
if new!=actual:updates.append((source,destination,new,name))
|
||||
for source,destination,new,name in updates:
|
||||
destination.parent.mkdir(parents=True,exist_ok=True)
|
||||
shutil.copyfile(source,destination)
|
||||
if hashlib.sha256(destination.read_bytes()).hexdigest()!=new:raise RuntimeError('写后校验失败:'+name)
|
||||
settings['hashes'][name]=new
|
||||
config.write_text(json.dumps(settings,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
||||
print(json.dumps({'updated_files':len(updates),'direction':'主仓库到旧工作区','deletions':0},ensure_ascii=False))
|
||||
Reference in new issue
Block a user