view .hgtags @ 6364:e8d85d51c7b2 stable

topic: monkey-patch ctx.branch() correctly in override_context_branch There's a `for p in ctx.parents()` loop in this block of code, and it's used to monkey-patch .branch() method for both parents of ctx. It assigns each parent of ctx to variable `p` (implicitly) and p.branch method to variable `pbranch` (explicitly). This worked fine when there's only one p1, but when there were 2 parents, this code was broken, and our tests didn't catch this because the use of override_context_branch context manager is quite limited. The problem is that the newly created function uses `p` and `pbranch`, and the closures for the new p1.branch() and p2.branch() didn't get created until the for-loop finished, and the values `p` and `pbranch` could change before that. In other words, the new .branch method of p1 was effectively identical to p2's because the values that were available to it were from the second cycle of the for-loop, when it the loop was at p2. Now we pass the values to a function that creates the new .branch methods, and since these values are provided to overridebranch() as arguments, they get enclosed when the function returns. This was seen (and tested) during topic namespaces-related work, when override_context_branch usage was expanded to include some local operations.
author Anton Shestakov <av6@dwimlabs.net>
date Thu, 15 Dec 2022 17:07:25 +0400
parents 6dff9c845ee6
children ff0cc356244f
line wrap: on
line source

6c6bb7a23bb5125bf06da73265f039dd3447dafa 0.1.0
d3f20770b86a31dba56ae7b252089e12b34702da 0.2.0
c046b083a5e0b21af69027f31cee141800cf894b 0.3.0
9bbcd274689829d9239978236e16610688978233 0.4.0
4ecbaec1d664b1e6f8ebc78292e1ced77a8e69c0 0.4.1
7ef8ab8c6feadb8a9d9e13af144a17cb23e9a38d 0.5
4a5488c01a66be4729252175cea0ea739a88a540 0.6
18a0d96ed559089edf90206c469f3f8c26681c64 0.7
1b2757c1bd918509184f6c1d06b2329a847e31b0 0.7
b18b000363550f02f413aed008f8e306318c608c 1.0.0
ca5bb72d14aeb6e6053e3a53c064a2b7dc8010e5 1.0.1
b1bdcb4506defef0e857e2710633f7686d8034a5 1.0.2
5559e5a4b656978c592d364f242edc62369d7e84 1.0.2
c062edbcaf13135d0312fd2039deca74573ff4f0 1.1.0
22cacfce2a65ab965c6179ae862b148f4abc7d8a 1.1.0
d43e80504e55db9ad4826e860e50530103a27b0f 2.0.0
f9d305deeff3dba782e65faf4ef3fd1569995859 2.1.0
862b6b71a35836e81f090ba7229c2888e8ed2f9f 3.0.0
cdb52bbbe5b8770d5e68943b7e73bee4ba136ecc 3.1.0
c3ba8a965a7a173e388d84819e936ea9bae9797f 3.2.0
83882f2fbecba0b7e7f7e5d490b57db93bd7fa22 3.3.0
fc04758ea9f549684989ee673b04d9724756dc85 3.3.1
a03ea39aca2a66ea36817512d586dcbc99dbfe9b 3.3.2
0304fc2bab158658df53a8f4edd5aa300a9497d2 4.0.0
e914884fb7210d6350d94909cb25ebc602359680 4.0.1
4d5d101e878f6d6264a8e036b11afdf922c4ef94 4.1.0
c13b408c00066af78cda88734909c6f2f3505f76 5.0.0
51e1e962172c0178394cd36652d90181319f5416 5.0.1
0f30907852831f818bd0d01141b4ab7d8d71b821 5.0.1
dbd0733e584073d6a7b6dea933767853e9cfe845 5.0.2
bfe9be352453640233371cc7deb409a09decacf9 5.1.0
9b8628e0a142e0e094e27430c388e3c12ceba513 5.1.1
e886bc501796d53e0a19e608c6e5a6071191819e 5.1.2
c52c15100fb2d85c3525d6d085b3663ec4f90fe6 5.1.3
891c3ce894fa879532299910735bcc2a968245b1 5.1.4
1377f6a7f9ecb25e9b8885fce8f6f42e0d6f3f12 5.1.5
c79bdc8563509cd4e99946593d0b39af40271a30 5.2.0
00026533ff9f52733a45df008e3d56a5d3a8e76a 5.2.0
44a9dcb3fefcf8281ebe4e359e7dbb637512cf7f 5.2.0
c15d6168412f175568dac89e6ee1cd8434fef906 5.2.1
bd59cc2ee2039c370a0343f683488cde2a106565 5.3.0
b21ce82e6f7640c2b38506545968650227d67e9b 5.4.0
2ad40d972a740a613c4c559104166a015b37cac2 5.4.1
727c7211c810d304ebf92b32db7ecf697ce46ac6 5.5.0
99ede2d775458a236a46ad25a93aca473b676eee 5.6.0
99ede2d775458a236a46ad25a93aca473b676eee 5.6.0
e7b6e9c4a5d4317f56c2862910c569723b6ea71b 5.6.0
70694b2621ba9d919bc38303f8901e84caf5da0f 5.6.1
165ad227993de4e7d819cc6c820d5b9f7b38b80d 6.0.0
5ef112a6eb875633a7925cde61b7d2d9e65b3a56 6.0.1
8510d3fd7c3b312dc731f4c29badc415d504558a 6.1.0
d4ee0274a8efbaf3d73a659998248c379c61c2bf 6.2.0
0af99106b0754426913b5c82fb52dc70d4d299f6 6.2.1
6da4ca7b3e4fc214a363a5cf723554f114b7f51e 6.3.0
e358c0263e4629746a7c925429c951f67d4b02b1 6.3.1
e60248f26f923f4460682252f7863ff86f7b86b0 6.4.0
734c0bc066cdc0121a20a9cb44c8cc30c653be94 6.5.0
cc3e09e033a3c632c9ac35badbf8b5d53f584049 6.6.0
3a4f75c6619c7ef7d78ee0912efd6cb01d55b521 6.7.0
430ad68292d76b9387d1eeadf289951f51fd88d3 6.7.1
ec0bbf26ce7fadd42c637e01d3750dac96ac0b1b 6.8.0
c56c028f3802202241551e5953bea74ab3a6c434 7.0.0
c4940c22d76b9c6b3c2117a3b490f3c4fd796972 7.0.1
06a3cb59495636df8b567e49a0fd7fd8fd823074 7.1.0
bf6b859807bac23752a26e58876fe3a4a9a2fef8 7.2.0
6c772398eb4e209914e1074cdac4f3ebf714e437 7.2.1
e4ac2e2c2086f977afa35e23a62f849e9305a225 7.3.0
116cdd8c102ab0ae6295fb4886b0882e75e4d8f7 8.0.0
0887c30255a1a1808d74a63b16e896d457f8ef32 8.0.1
2c5d79c6459c6fabe0eb8723fc5041ac0dac7a9a 8.1.0
e7abf863e1130e14cd4d65e53467a199d267b4fd 8.1.1
f1cde4c97806fc6d6cc4c1e09ea2f4081a3ebaec 8.1.2
8d8f08245f9715adf48d6f0f59772b04fd7de1f7 8.2.0
c6362c4abd695fb96e2fd63c150c051852303c7e 8.2.1
45d4b49d81d9ed23e40126f72bfc3fb339522356 8.3.0
b90422a11a887c6ff756c2a5622ea0a1e260ff4c 8.3.1
7edc5c148df0150087832b861966d658df0b601e 8.3.2
97b18934d6db9e7e7eaa3fb656c0411d7f43af26 8.3.3
8c4289d0e91e95b3281c378e1ac3f4ff4678b4d3 8.4.0
33c617626fd90a0a00e831b4762f64fecb609317 8.5.0
05c9dcf5512ed77490a35b4d6b1c3fe860259f48 8.5.1
756db65030c64b22836fe236d1db3b95477e3ef7 9.0.0
6f37fdad7ac123ca0a76872ac4639bd1f3c248f7 9.1.0
40795751be1c329ec23202ecd79ba45623e1df66 9.2.0
d989bab720e5f7638a9e58fda76cf3f4b40d0611 9.2.1
ef41094c34e162eb32ef24bf66d9776d1112751a 9.2.2
583dc6ef3eb21fbf6574021136f32b8a1163506c 9.3.0
8d955635cf457aaa4810d77740721d4275001f74 9.3.1
27d57ca8686590867e62e3d42c96bad84a5f56ef 10.0.0
fb543438704b73b22023a493c9ef76fc8746b796 10.0.1
1cce884c944830a7b331a17fd18614b93cbac987 10.0.2
782cbadb123fe4991e91a03d367e02d0b5ae969c 10.1.0
35b883a4ff5a97973eb9e6f00014e71f14cebe70 10.2.0
eadc1d09f2f567fdae7280aefc8cf4cdc4d78cbc 10.2.0.post1
c0ed8e57463875414d1c06f0428d550c4480d289 10.3.0
93dc3cb6884259f91d739a1cfe993a01820c729c 10.3.1
30c8d8e6a7f4056c46a868b47ee949d3bdb48c4c 10.3.2
cca465bf6a6a103449aa58deecdffba8e546f7c6 10.3.3
de530d27554b43c00509696dc7a1496f5129e1a4 10.4.0
64bb9c4a13d388233d4d6d9b761ece9c6ce77fb3 10.4.1
0d53a8d4170b32d03e4fd8582b32fe2790d5e34f 10.5.0
62f31db544594837a71cb91a7c1e8e515c5a52e9 10.5.1
7a7da643a6e302f524e3c96c084e16db371dea90 10.5.2
569e09c61c4f0f78b5bb581b02583fc7139470d7 10.5.3