8f8891090423
lowercase a repo's name at first offer so a folder's case never changes its Kepr URL (v3.2.26)
- time
- 2026-10-01 18:05 UTC · 1 week ago
- machine
- Junes-MacBook-Pro.local
- agent
- claude-opus-5-5
- session
- lowercase repo names
- parent
- f5cf9f314308
↓ koh-8f889109.tar.gzatlas at this save
files changed4 files
VERSION+1 −1src/exchange/exchange.v+4 −3src/exchange/exchange_test.v+18 −0v.mod+1 −1src/exchange/exchange.v+4 −3
@@ -70,13 +70,14 @@7070 store.set_state(repo_state_key, name)!7171 }7272 73-// repo_name is the folder's name at first offer, remembered in the repo so74-// renaming the folder later changes nothing.73+// repo_name is the folder's name at first offer, lowercased so it makes the same74+// Kepr URL whatever the folder's case (June, 2026-10-01), and remembered in the75+// repo so renaming the folder later changes nothing.7576 pub fn repo_name(store &storage.Store, mut backend remote.Backend) !string {7677 if remembered := store.state(repo_state_key) {7778 return remembered7879 }79- name := os.base(store.root)80+ name := os.base(store.root).to_lower()8081 // Before the clash check below: a remote this koh cannot read is a "update8182 // koh" answer, not a "rename the folder" one.8283 check_format(mut backend, name)!src/exchange/exchange_test.v+18 −0
@@ -132,6 +132,24 @@132132 assert backend.get(head_key('proj'))!.body.bytestr() == head_of(a).id133133 }134134 135+fn test_a_repo_name_is_lowercased_at_first_offer() {136+ base := scratch('lower')!137+ defer {138+ os.rmdir_all(base) or {}139+ }140+ dir := os.join_path(base, 'Haven')141+ os.mkdir_all(dir, os.MkdirParams{})!142+ mut a := open_repo(dir)!143+ defer {144+ a.close()145+ }146+ put(a.root, 'a.txt', 'one\n')!147+ make_save(a, 'first')!148+ mut backend := remote.new_folder(os.join_path(base, 'remote'))!149+ assert offer_now(a, mut backend)!.repo == 'haven'150+ assert backend.get(head_key('haven'))!.found151+}152+135153 fn test_steal_fast_forwards_a_machine_that_has_nothing_of_its_own() {136154 base := scratch('forward')!137155 defer {v.mod+1 −1
@@ -1,6 +1,6 @@11 Module {22 name: 'koh3'3- version: '3.2.25'3+ version: '3.2.26'44 description: 'One SQLite file per repo, one line of history.'55 license: 'MIT'66 }