Ticket UUID: | 4b72e10dca387049db24d2b6d4cc49282bcc9ce9 | ||
Title: | Pull chain does not work: MASTER -> SLAVE -> LOCAL | ||
Status: | Fixed | Type: | Code_Defect |
Severity: | Critical | Priority: | Immediate |
Subsystem: | one | Resolution: | Fixed |
Last Modified: | 2008-07-23 21:00:01 | ||
Version Found In: | 141c31792b | ||
Description & Comments: | |||
This incident was already mentioned on the mailing list. But I thought it is better to file a ticket to not get it lost.
The problem is, I cloned and pulled from fossil-scm.org to my local central repository and from there into another local one. This is the same chain as if I had a repos.master clone to repos.slave clone to repos.local. So the changes should flow from the MASTER over the SLAVE to LOCAL. But the changes does not reach LOCAL. I have written a small scenario to reproduce that bug. You may copy/paste it into a script and execute it: # Create the testenv mkdir -p test1/dir cd test1/dir # # Create the MASTER DB fossil new ../myrepos.master fossil open ../myrepos.master # # Add file 'txt' echo "# line 1" > txt fossil add txt fossil commit -m "initial" --nosign fossil close rm * # # MASTER is connectable via port 8080 fossil server -P 8080 ../myrepos.master & pid_MASTER=$! # # Clone the SLAVE DB fossil clone http://localhost:8080 ../myrepos.slave # # SLAVE is reachable via port 8081 fossil server -P 8081 ../myrepos.slave & pid_SLAVE=$! # # Clone the LOCAL DB fossil clone http://localhost:8081 ../myrepos.local # # Open the MASTER and modify the file 'txt' fossil open ../myrepos.master echo "# line 2" >> txt fossil commit -m "change 1" --nosign echo "### Content in MASTER"; cat txt ### Content in MASTER # line 1 # line 2 fossil close rm * # # Pull all changes from MASTER --> SLAVE fossil pull -R ../myrepos.slave # # Open SLAVE and look at the file 'txt' fossil open ../myrepos.slave echo "### Content in SLAVE"; cat txt ### Content in SLAVE # line 1 # line 2 fossil close rm * # # Pull all changes from SLAVE --> LOCAL fossil pull -R ../myrepos.local # # Open LOCAL and look at the file 'txt' fossil open ../myrepos.local echo "### Content in LOCAL"; cat txt ### Content in LOCAL # line 1 # # kill the server MASTER and SLAVE kill $pid_MASTER $pid_SLAVE As you can see the file txt will contain two lines in both the MASTER and the SLAVE but it will only contain one line in LOCAL. drh added on 2008-07-23 21:00:01: |