To complete or present in another form the introduction to Git usage
in this chapter, it may be a good idea to look for Git documentation
-at @uref{http://git-scm.com/documentation},
+at @uref{http://git-scm.com/documentation},
@menu
* Getting the source code::
* Sharing your changes::
* Advanced git stuff::
* Git on Windows::
+* Development inside VirtualBox (compiling on Windows)::
@end menu
@item @code{gub}:
This stores the Grand Unified Binary, our cross-platform building
-tool.
+tool.
@c TODO: merge the gub stuff with this CG.
For more info, see @uref{http://lilypond.org/gub}. The git
location is:
the remote @code{git.sv.gnu.org} repository:
@example
-git pull origin
+git pull -r
@end example
checked that the entire thing compiles, you may:
@example
-git commit -a
+git commit -a
git format-patch origin
@end example
+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:
+
+@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 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:
@noindent
(and possibly modify the @file{GNUmakefile})
-Send an email to @email{lilypond-devel@@gnu.org} with the diff as
-an attachment.
+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, 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
* 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)
+
+
+
+