at @uref{http://git-scm.com/documentation},
@menu
-* Getting the source code::
-* Updating the source code::
-* Sharing your changes::
-* Advanced git stuff::
-* Git on Windows::
+* Getting the source code::
+* Updating the source code::
+* Sharing your changes::
+* Advanced git stuff::
+* Git on Windows::
+* Development inside VirtualBox (compiling on Windows)::
@end menu
@section Getting the source code
@menu
-* Git introduction::
-* Main source code::
-* Website source code::
-* Documentation translations source code::
-* Other branches::
-* Other locations for git::
-* Git user configuration::
+* Git introduction::
+* Main source code::
+* Website source code::
+* Documentation translations source code::
+* Other branches::
+* Other locations for git::
+* Git user configuration::
@end menu
@node Git introduction
@section Updating the source code
@menu
-* Importance of updating::
-* Update command::
-* Resolving conflicts::
+* Importance of updating::
+* Update command::
+* Resolving conflicts::
@end menu
the remote @code{git.sv.gnu.org} repository:
@example
-git pull origin
+git pull -r
@end example
@section Sharing your changes
@menu
-* Producing a patch::
-* Committing directly::
+* Producing a patch::
+* Committing directly::
@end menu
The commit should include a brief message describing the change.
This consists of a one-line summary describing the change, and
if necessary a blank line followed by several lines giving the
-details.
+details:
+
+@example
+Did household chores.
+
+I hung up the wet laundry and then washed the car. I also
+vacuumed the floors, rinsed the dirty dishes, fed the cat, and
+recalibrated the temporal flux machine.
+@end example
-If the change is to the documentation only the one-line summary
-should be prefixed with "Docs: ".
+If the change is to the documentation only then the one-line
+summary should be prefixed with @qq{Docs: }.
If you added a file to the source code, you must add it to git
with:
These commands will produce one or more files named
@file{0001-xyz}, @file{0002-abc}, etc. in the top directory of the
git tree. Send an email to @email{lilypond-devel@@gnu.org} with
-these files attached.
+these files attached, and a developer will review and apply the
+patches to the main repository.
@node Committing directly
@noindent
where @var{user} is your login name on Savannah.
-If you have not already done so, you should generate and upload a SSH
-key: open @uref{https://savannah.gnu.org/my/} in your browser, then go to
-@q{Preferences} then to something like @q{Edit SSH Keys}, and follow
-the instructions on that page.
+If you have not already done so, you should generate and upload a
+SSH key: open @uref{https://savannah.gnu.org/my/} in your browser,
+go to @q{Account Configuration}, then to something like
+@q{Edit SSH Keys}, and follow the instructions on that page.
You may then:
git push origin
@end example
+Note that recent versions of Git (Git 1.6.3 or later) will issue a
+big warning if the above command is used. The simplest solution
+is to add a new section to @file{.git/config} that looks like
+this:
+
+@example
+[push]
+ default = matching
+@end example
+
+@noindent
+Then @code{git push origin} will work as before. For more
+details, consult the @code{git push} man page.
+
+
@node Advanced git stuff
@section Advanced git stuff
Git branches of LilyPond source code is presented.
@menu
-* Introduction to Git concepts::
-* Git commands for managing several branches::
-* Working on LilyPond sources with several branches::
-* Git log::
-* Applying git patches::
+* Introduction to Git concepts::
+* Git commands for managing several branches::
+* Working on LilyPond sources with several branches::
+* Git log::
+* Applying git patches::
+* Reverting all local changes::
@end menu
repository.
-
@node Git log
@subsection Git log
@warning{The @code{gitk} command may require a separate @code{gitk} package,
available in the appropriate distribution's repositories.}
+
@node Applying git patches
@subsection Applying git patches
-Well-formed git patches should be committed with
+Well-formed git patches created with @code{git format-patch}
+should be committed with the following command:
+
+@example
+git am @var{patch}
+@end example
+
+Patches created without @code{git format-patch} can be applied in
+two steps. The first step is to apply the patch to the working
+tree:
@example
-git am
+git apply @var{patch}
@end example
-Patches created without @code{git format-patch} should be
-committed with
+@noindent
+The second step is to commit the changes and give credit to the
+author of the patch. This can be done with the following command:
@example
-git apply
+git commit -a --author="First Last <user@@example.net>"
@end example
+@node Reverting all local changes
+@subsection Reverting all local changes
+
+Sometimes git will become hopelessly confused, and you just want
+to get back to a known, stable state. This command destroys any
+local changes you have made, but at least you get back to the
+current online version:
+
+@example
+git reset --hard origin/master
+@end example
+
@node Git on Windows
@section Git on Windows
@subsection Installing git
Obtain Git from
-@uref{http://code.google.com/p/msysgit/downloads/list}.
-(Note, not msysGit, which is for Git developers) and
-install.
+@uref{http://code.google.com/p/msysgit/downloads/list}
+(note, not msysGit, which is for Git developers and not PortableGit,
+which is not a full git installation) and
+install it.
+
+Note that most users will not need to install SSH. That is not
+required until you have been granted direct push permissions to
+the master git repository.
Start Git by clicking on the desktop icon.
This will bring up a command line bash shell. This may be
call the folder to contain the repository [path]/Git.
You will need to have space for around 150Mbytes.
-In the git bash shell type
+Start the Git bash shell by clicking on the desk-top icon installed
+with Git and type
@example
cd [path]/Git
left-hand (Git Repository) panel. Leave everything
else unchanged and save it.
+Note that Windows users must leave the default setting for line
+endings unchanged. All files in a git repository must have lines
+terminated by just a LF, as this is required for Merge to work, but
+Windows files are terminated by CRLF by default. The git default
+setting causes the line endings of files in a Windows git repository
+to be flipped automatically between LF and CRLF as required. This
+enables files to be edited by any Windows editor without causing
+problems in the git repository.
+
@subsection Checking out a branch
At this stage you have two branches in your local repository,
Once familiarity with using git on Windows has been gained the
standard git manuals can be used to learn about these.
+
+
+@node Development inside VirtualBox (compiling on Windows)
+@section Development inside VirtualBox (compiling on Windows)
+
+
+
+