annotate tests/fixtures/branch_delete_parent_dir.sh @ 1550:67b28d657f62

sqliterevmap: break ".hashes()" cycle in a safer way The `fromsvn()` revset implementation could cause weakref error when using sqliterevmap like: File "hgsubversion/util.py", line 357, in <lambda> return subset.filter(lambda r: tonode(r) in hashes) File "hgsubversion/maps.py", line 542, in __contains__ return self.get(key) != None File "hgsubversion/maps.py", line 533, in get for row in self.revmap._query( ReferenceError: weakly-referenced object no longer exists Basically the seemingly harmless assignment could break surprisingly: # dangerous: `hashes` does not have a reference of `meta.revmap` and may # become unavailable after `meta`, `revmap` being released by refcount. hashes = meta.revmap.hashes() The above syntax is nice to support while avoiding cycles is also nice. This patch removes `revmap._hashes` so the revmap no longer owns a reference of a `ReverseRevMap` object so the `ReverseRevMap` object no longer needs to use weakref for `self.revmap`. This could actually be caught by `comprehensive/test_sqlite_revmap.py`. I was not careful enough verifying the "fromsvn()" patch.
author Jun Wu <quark@fb.com>
date Thu, 21 Dec 2017 17:39:52 -0800
parents 45df4d9320fa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
473
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
1 #!/bin/sh
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
2 mkdir temp
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
3 cd temp
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
4 svnadmin create repo
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
5 svn co file://`pwd`/repo wc
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
6 cd wc
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
7 mkdir branches trunk tags
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
8 svn add *
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
9 svn ci -m 'btt'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
10 echo foo > trunk/foo
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
11 svn add trunk/foo
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
12 svn ci -m 'add file'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
13 svn up
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
14 svn cp trunk branches/dev_branch
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
15 svn ci -m 'branch'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
16 svn up
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
17 svn rm branches
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
18 svn ci -m 'delete branches dir'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
19 cd ..
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
20 cd ..
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
21 svnadmin dump temp/repo > branch_delete_parent_dir.svndump
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
22 echo
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
23 echo 'Complete.'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
24 echo 'You probably want to clean up temp now.'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
25 echo 'Dump in branch_delete_parent_dir.svndump'
45df4d9320fa Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
diff changeset
26 exit 0