7.4 LSR to Git

  1. Make sure that convert-ly and lilypond are a bleeding edge version – the latest release or even better a fresh snapshot from Git master.
  2. Start by creating a list of updated snippets from your local repository. From the top source directory, run:
    scripts/auxiliar/makelsr.py
    

    Commit the changes and make a patch. Check the patch has nothing other than minor changes - in particular changes to the commitish for translations. If all is good and you’re confident in what you’ve done, this can be pushed directly to staging.

  3. Next, download the updated snippets and run makelsr against them. From the top source directory, run:
     
    wget http://lsr.dsi.unimi.it/download/lsr-snippets-docs-YYYY-MM-DD.tar.gz
    tar -xzf lsr-snippets-docs-YYYY-MM-DD.tar.gz
    scripts/auxiliar/makelsr.py lsr-snippets-docs-YYYY-MM-DD
    

    where YYYY-MM-DD is the current date, e.g. 2011-12-25.

  4. Follow the instructions printed on the console to manually check for unsafe files. These are:
    Unsafe files printed in lsr-unsafe.txt: CHECK MANUALLY!
      git add Documentation/snippets/*.ly
      xargs git diff HEAD < lsr-unsafe.txt
    

    First, it’s important to check for any added files and add them to the files git is tracking. Run git status and look carefully to see if files have been added. If so, add them with git add.

    As the console says, makelsr creates a list of possibly unsafe files in ‘lsr-unsafe.txt’ by running lilypond against each snippet using the -dsafe switch. This list can be quite long. However, by using the command xargs git diff HEAD < lsr-unsafe.txt git will take that list and check whether any of the snippets are different from the snippet already in master. If any is different it must be checked manually VERY CAREFULLY.

    Note: Somebody could sneak a #'(system "rm -rf /") command into our source tree if you do not do this! Take this step VERY SERIOUSLY.

    If there is any doubt about any of the files, you are strongly advised to run a review on Rietveld.

  5. If a Review is not needed, commit the changes and push to staging.

Note that whenever there is one snippet from ‘Documentation/snippets/new’ and the other from LSR with the same file name, the one from ‘Documentation/snippets/new’ will be copied by makelsr.py.


LilyPond — Contributor’s Guide