1111ROOT=$( git rev-parse --show-toplevel 2> /dev/null || pwd)
1212cd " $ROOT "
1313HEAD_FULL=$( git rev-parse HEAD 2> /dev/null || true)
14+ GIT_COMMON_DIR=$( git rev-parse --git-common-dir 2> /dev/null || true)
15+ if [ -n " $GIT_COMMON_DIR " ] && [[ " $GIT_COMMON_DIR " != /* ]]; then
16+ GIT_COMMON_DIR=" $ROOT /$GIT_COMMON_DIR "
17+ fi
1418
1519SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
1620STATE_SCRIPT=" $SCRIPT_DIR /serena_memory_state.py"
1721
1822KNOWLEDGE_PATTERN=' ^.. \.serena/(memories|plans|research)(/|$)'
1923RUNTIME_PATTERN=' ^.. \.serena/(\.sync_marker|\.serena_sync_state\.json|\.auto_sync_head|\.active_workflow_intent\.json|\.dirty_stop_ack|\.flow_sync_marker|\.flow_post_task_state\.json|\.flow_blocker_ack\.json|\.stop_lifecycle_timeout_marker|\.bootstrap_overrides\.log)$'
2024
25+ write_sync_ack () {
26+ if [ -z " $HEAD_FULL " ]; then
27+ return 0
28+ fi
29+ mkdir -p .serena
30+ printf " %s\n" " $HEAD_FULL " > .serena/.auto_sync_head
31+ if [ -n " $GIT_COMMON_DIR " ]; then
32+ mkdir -p " $GIT_COMMON_DIR /rldyour"
33+ printf " %s\n" " $HEAD_FULL " > " $GIT_COMMON_DIR /rldyour/serena_auto_sync_head"
34+ fi
35+ }
36+
2137STATUS=$( git status --porcelain -uall 2> /dev/null | grep -vE " $RUNTIME_PATTERN " || true)
2238if [ -z " $STATUS " ]; then
2339 if [ ! -f " $STATE_SCRIPT " ]; then
@@ -32,10 +48,7 @@ if [ -z "$STATUS" ]; then
3248 MEMORY_CURRENT=$( printf " %s" " $STATE_JSON " | python3 -c ' import json,sys; data=json.load(sys.stdin); print("true" if (data.get("memory_matches_head") or data.get("memory_semantically_current")) else "false")' 2> /dev/null || echo " false" )
3349 if [ " $MEMORY_CURRENT " = " true" ]; then
3450 rm -f .serena/.sync_marker .serena/.serena_sync_state.json
35- if [ -n " $HEAD_FULL " ]; then
36- mkdir -p .serena
37- printf " %s\n" " $HEAD_FULL " > .serena/.auto_sync_head
38- fi
51+ write_sync_ack
3952 echo " Serena knowledge is current; removed runtime sync markers"
4053 exit 0
4154 fi
@@ -86,10 +99,7 @@ if [ -z "$TRACKED_KNOWLEDGE" ]; then
8699 exit 1
87100 fi
88101 rm -f .serena/.sync_marker .serena/.serena_sync_state.json
89- if [ -n " $HEAD_FULL " ]; then
90- mkdir -p .serena
91- printf " %s\n" " $HEAD_FULL " > .serena/.auto_sync_head
92- fi
102+ write_sync_ack
93103 echo " Serena knowledge is fullrepo-managed; removed runtime sync markers without committing to the current branch"
94104 exit 0
95105fi
103113git commit -m " chore(serena): sync project knowledge after ${HEAD_SHORT} "
104114HEAD_FULL=$( git rev-parse HEAD 2> /dev/null || true)
105115rm -f .serena/.sync_marker .serena/.serena_sync_state.json
106- if [ -n " $HEAD_FULL " ]; then
107- printf " %s\n" " $HEAD_FULL " > .serena/.auto_sync_head
108- fi
116+ write_sync_ack
0 commit comments