[Libreoffice-commits] dev-tools.git: bibisect/README.txt
Robinson Tryon
qubit at runcibility.com
Thu Jan 23 02:36:47 PST 2014
bibisect/README.txt | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 167 insertions(+)
New commits:
commit 2ecbecbe78c150aa873de45c8fad88777ef06a48
Author: Robinson Tryon <qubit at runcibility.com>
Date: Wed Dec 4 05:07:49 2013 -0500
Bibisect: Add README with step-by-step documentation
Change-Id: I94b5088c342587787e0417d37825535ccadc21e7
Reviewed-on: https://gerrit.libreoffice.org/6922
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>
diff --git a/bibisect/README.txt b/bibisect/README.txt
new file mode 100644
index 0000000..1305f03
--- /dev/null
+++ b/bibisect/README.txt
@@ -0,0 +1,167 @@
+README.txt
+
+This directory contains tools relating to the LibreOffice "Bibisect"
+QA Tool, created by Bjoern Michaelsen:
+https://wiki.documentfoundation.org/Bibisect
+
+
+USAGE for 'mergeranges'
+-----------------------
+
+The 'mergeranges' tool may be used to merge ranges of bibisect commits
+together, regardless of whether they may be found in the same or
+different git repositories.
+
+To use the tool, you'll need a separate file containing the ranges of
+commits to merge. Here's an example of a file containing ranges:
+
+ 50612eb408c515e3672952083b805be708d59c4a..remotes/bibisect35/master
+ d38dc5cb288aeef58175a0d656091940a3f35ee5..remotes/bibisect36/master
+ b4e60c226e714050f5ab0680669463b98ccd8ea8..remotes/bibisect40/master
+
+NOTE: These ranges are *inclusive* -- we'll include ALL of these
+commits in the new/expanded bibisect repository.
+
+The script may be called as follows:
+
+ ./mergeranges <file containing ranges>
+
+
+ Step-by-Step Instructions for a New Repo
+ ----------------------------------------
+
+ Prep Cleanup
+ ------------
+
+(Things that may need to be cleaned up before you run mergeranges)
+
+Tags that may already exist:
+# UPDATE: we now use 'git tag -f', so if a tag already exists we'll
+# just blow it away...
+#
+# $ for i in `git tag -l|grep "source-hash"`; do git tag -d $i; done
+# $ git tag -d oldest last40onmaster last36onmaster last35onmaster
+
+Branches:
+# UPDATE:
+# If it's actually a new repo, then it won't have a 'mergeranges' branch.
+#
+ $ git branch -D mergeranges
+
+ Starting
+ --------
+
+Given:
+ * Two different git bibisect repositories 'Alice' and 'Bob'
+ * Alice with linear commits [50612eb4..5b4b36d8]
+ * Bob with linear commits [1f3b10d8..25428b1e]
+ * The Bob range follows the Alice range
+
+1) Create a new repo 'Combined'
+
+2) Edit the 'ranges' file alongside mergeranges to contain:
+ 50612eb4..5b4b36d8
+ 1f3b10d8..25428b1e
+
+ WARNING: Look through the commits carefully (especially the
+ first/last commits), and see if there are any empty/stub commits
+ that don't contain a build. If there are, cut those out of your
+ range -- they'll just be in the way.
+
+3) cd into Combined (we'll run mergeranges from there)
+
+4) Add Alice, Bob as remotes
+ git remote add alice /home/qubit/alice/.git
+ git remote add bob /home/qubit/bob/.git
+ git remote update # This step might take a little while
+
+5) Run the mergeranges script:
+ ../dev-tools/bibisect/mergeranges ../dev-tools/bibisect/ranges
+
+6) Cross your fingers!
+
+ Step-by-Step Instructions for Adding to a Repo
+ ----------------------------------------------
+
+ Prep Cleanup
+ ------------
+
+(Things that may need to be cleaned up before you run mergeranges)
+
+Tags:
+ Tags may already exist, but we want to save many of them, so punt on this.
+
+Branches:
+ We want to save the 'mergeranges' branch
+
+ Starting
+ --------
+
+Given:
+ * Two different git bibisect repositories 'Alice' and 'Bob'
+ * Alice with commits in a 'mergeranges' branch
+ * The Bob range follows the Alice range
+ * Bob with linear commits [24c6e765..f36b371d]
+
+1) Edit the 'ranges' file alongside mergeranges to contain:
+ 24c6e765..f36b371d
+
+ WARNING: Look through the commits carefully (especially the
+ first/last commits), and see if there are any empty/stub commits
+ that don't contain a build. If there are, cut those out of your
+ range -- they'll just be in the way.
+
+2) cd into Alice (we'll run mergeranges from there)
+
+3) Add Bob as a remote
+ git remote add bob /home/qubit/bob/.git
+ git remote update # This step might take a little while
+
+4) Run the mergeranges script:
+ ../dev-tools/bibisect/mergeranges ../dev-tools/bibisect/ranges
+
+6) Cross your fingers!
+
+ Cleanup After Merge
+ -------------------
+
+1) Remove the remotes
+ git remote rm alice
+ git remote rm bob
+
+2) Tag the oldest commit (the script handles the latest commit)
+
+ # NOTE: If you're using an existing 'mergeranges' branch, the
+ # 'oldest' tag should already be set on the right commit!
+ #
+ # Note: The following should theoretically work, but there's an
+ # extra 'root' commit in the source repos (perhaps I could remove them?)
+ #git tag oldest `git rev-list --max-parents=0`
+ git tag oldest 65fd30f5
+
+3) git gc
+ Starting size: 8.4GB
+ After gc: 8.3GB
+
+4) Upload/save a copy before aggressively gc'ing the thing
+
+5) (OPTIONAL) git gc --aggressive
+ This will sometimes/often fail, especially when run on GB's of
+ data. I've had it fail several times -- be prepared for sadness... :P
+
+6) Try checking-out the repo from the server
+ This repo is only 7.7GB in size (after checking-out 'mergeranges',
+ it's 8.2GB on disk)
+
+7) (TEST BANDWIDTH/SPEED)
+ Add a new build to the repo (I'm just using 4.2.0.0.beta1 as test data);
+
+ Commit:
+ 1-2 minutes (very quick)
+ git push:
+ 2.5 minutes (Size: 154.23 MiB | 2.61 MiB/s) # Big because of gc?
+ # On the local checkout of the bibisect repo
+ git remote update:
+ 1.5 minutes (Size: 154.23 MiB | 1.77 MiB/s)
+
+ Conclusion: Rather speedy, esp. over WiFi.
More information about the Libreoffice-commits
mailing list