so this is interesting: after refs/tags/0.10.7 it iterated for a bit without hitting a breakpoint, and then encountered refs/tags/0.10.7 _again_ Breakpoint 2, repo_commits::remote_name[abi:cxx11](cppgit2::oid const&) (this=0x5555555ac478, commit=...) at process2.cpp:96 96 non_remote_references.push_back(branch_tip); 1: branch_name = "refs/tags/0.10.6" (gdb) Continuing. Breakpoint 1, repo_commits::remote_name[abi:cxx11](cppgit2::oid const&) (this=0x5555555ac478, commit=...) at process2.cpp:92 92 branch_name = branch.name(); 1: branch_name = "refs/tags/0.10.6" (gdb) Continuing. Breakpoint 2, repo_commits::remote_name[abi:cxx11](cppgit2::oid const&) (this=0x5555555ac478, commit=...) at process2.cpp:96 96 non_remote_references.push_back(branch_tip); 1: branch_name = "refs/tags/0.10.7" (gdb) Continuing. Breakpoint 1, repo_commits::remote_name[abi:cxx11](cppgit2::oid const&) (this=0x5555555ac478, commit=...) at process2.cpp:92 92 branch_name = branch.name(); 1: branch_name = "refs/tags/0.10.7" it's great to drill down on quirks more. (gdb) list 87 ) { 88 auto branch = *reference_iter; 89 auto branch_tip = branch.resolve().target(); 90 if (branch_tip == commit || repository.is_descendant_of(branch_tip, commit)) { 91 static thread_local std::string branch_name; 92 branch_name = branch.name(); 93 try { 94 return repository.branch_remote_name(branch_name); 95 } catch (cppgit2::git_exception &) { 96 non_remote_references.push_back(branch_tip); I'm curious if the reference pointer is the same. It looks like engaging this may mean going into the source of libgit for me; uncertain. meanwhile the source code has finished packing: datagen$ rm -rf tinytokenizers/target datagen$ w3 put . # Packed 13380 files (442.8MB) # bafybeiaeshr3p2qgb6wpdstjs53inods3jkekgtowuokmt2tjdugtg3ra4 таз Chunking Now it's on to "Storing", 19% .