A split of src/midas.cxx was discussed during Stefan & Thomas R. visit to TRIUMF.
Main reason for the split is to simplify analysis using AI tools, they work best on smaller files that contain closely related
code.
Main difficulty with the split is "git" tooling, which does not have a concept of file copy or file split. (still this is better
than older tools like cvd and svn, which had no concept of branching and merging).
My first step is to do a strawman split of midas.cxx on a branch, push it out and ask people to check that they git tooling
(vscode, clion, bitbucket, github, gitea, etc) see the split correctly.
Ideally, git log and git blame should be able to trace the revision of each split file
back to the beginning of time, instead of to the point of split from midas.cxx.
According to google AI, I should do this:
step 1: midas.cxx removed, split files are exact copies of midas.cxx, this allows git to identify the split point
cp midas.cxx split1.cxx
cp midas.cxx split2.cxx
...
git rm midas.cxx
git commit
step 2: edit the split files to remove duplicated code, commit.
step 3: check
git blame split1.cxx -> shows correct revision history for me. maybe need to use "-C"
git log split1.cxx -> shows correct revision history to split commit
git log --follow split1.cxx -> shows correct revision history for me
TD;DR continue below.
Identify all function names in midas.cxx:
cat midas.cxx | grep -v -e "^ " -e "^{" -e "^}" -e "^$" -e "^/" -e '^\\' -e "^@" -e "^*" -e "^#" | sort
^void functions:
void bk_xxx()
void bm_xxx()
void cm_xxx()
void dbg_xxx()
void rpc_xxx()
^std::string functions:
cm_xxx()
msprintf()
rpc_xxx()
^static functions:
bm_xxx
rpc_xxx
cm_xxx
^int functions:
bk_xxx
bm_xxx
cm_xxx
cm_msg_xxx
rb_xxx
rpc_xxx
^const data
cm_xxx
rpc_xxx
^bool functions:
rpc_xxx
^INT functions
bk_xxx
bm_xxx
cm_xxx
cm_msg_xxx
rpc_xxx
^BOOL functions
bk_xxx
cm_xxx
LC_ALL=C sort midas.cxx | grep -v -e "^/" -e "^\s" -e "^W" -e "^w" -e ^} -e ^{ -e ^[a-v] -e '^\\' -e ^[A-U] -e ^@ -e ^* -e ^# -e ^$
Stawman split:
midas.cxx -> deleted
cm_msg.cxx - all the cm_msg functions
bm.cxx - all the event buffer functions
bk.cxx - all the event bank functions
rb.cxx - ring buffer functions (obsolete?)
rpc.cxx - all the RPC functions
cm.cxx - everything else
K.O. |