-This little howto is about Git repository used by Titanium Linux.
-You will find here examples of most often used git commands.
+This little howto is about the Git repository used by Titanium Linux.
+You will find here examples of the most common git commands.
Ready? Let's start (you must have RW access to TLD git repositories).
+Table Of Content:
+1. How do I prepare git to work?
+ a) Install git-core
+ b) Configure git globally
+ c) Configure ssh environment to work with git
+2. How do I commit a new .spec file or package to the repository?
+ a) Clone an empty repository (note: it will be automatically created on server
+ side.)
+ b) Set your local Email address
+ c) Put your files into the repository and add them locally
+ d) Push your changes to the server
+3. Crap, I've checked out a repository, forgot to change the local e-mail
+ address and commited my changes. Now I can't push them to the server.
+ What can I do?
+4. My new repository didn't show up on the web.
+5. I've deleted some files in my cloned repo. I'm doing git pull, but they
+ do not reappear.
+6. How can I add a description to a new repository?
+7. SPECS: What is obsolete now that we have GIT?
+
+==============================================================================
+1. How do I prepare git to work?
+
+a) Install git-core
+
+Just install git-core package via poldek:
+
+poldek
+install git-core
+
+b) Configure git globally
+
+To be able to work with git on TLD repository you will need to set up few
+things in git config:
+
+- your e-mail address which consists of your git login and tld-linux.org domain
+- your username, which should consist of your name and surename
+
+To do so, type:
+
+git config --global user.email "your_git_login@tld-linux.org"
+git config --global user.name "John Doe"
+
+Replace "your_git_login" and "John Doe" accordingly.
+
+Above commands will create ~/.gitconfig file with proper settings.
+
+c) Configure ssh environment to work with git
+
+If you plan to use non default ssh key pair, it's better to put some info about
+it to your default .ssh/config file. Edit your local Host alias and key path in
+sample below:
+
+Host git.tld-linux.org
+ User git
+ Hostname git.tld-linux.org
+ PreferredAuthentications publickey
+ IdentityFile /home/users/YOURUSER/.ssh/YOUR_KEY_FILE
+
+To test if ssh works, do the:
+
+ssh -T git.tld-linux.org
+
+you should get similar answer:
+
+hello USER, the gitolite version here is x.y.z
+the gitolite config gives you the following access:
+ R W TLD
+ (...)
+
==============================================================================
-1. How do I commit a new .spec file or package to the repository?
+2. How do I commit a new .spec file or package to the repository?
a) Clone an empty repository (note: it will be automatically created on server
- side.
+ side.)
git clone git@git.tld-linux.org:packages/your_new_package
b) Set your local Email address
+This step is optional if your git is configured globally (see point 1 of this HOWTO).
+
cd your_new_package
git config --local user.email your_git_login@tld-linux.org
time you commit, but feel free to do so if you want :-)
==============================================================================
-2. Crap, I've checked out a repository, forgot to change the local e-mail
+3. Crap, I've checked out a repository, forgot to change the local e-mail
address and commited my changes. Now I can't push them to the server.
What can I do?
put back your changes to it, commit and push.
==============================================================================
-3. My new repository didn't show up on the web.
+4. My new repository didn't show up on the web.
-Repository "packages" is checked every 15 minutes for new subrepositories by
-cron job. If found, they're added to the web. If for some reason cron job will
-fail ask one of git admins to run and/or fix this script:
+Repository "packages" are checked every 15 minutes for new subrepositories by
+a cron job. If found, they're added to the web. If for some reason cron job
+fails, ask one of the git admins to run and/or fix this script:
~git/scripts/packages_enable_gitweb.sh
-Top level repositores must be manually added to gitweb. Ask one of gitadmins
-to do following:
+Top level repositores have to be added manually to gitweb. Ask one of the git
+admins to do the following:
ssh your_login@kraz.tld-linux.org
sudo su - git
touch gitweb-export-ok
==============================================================================
-4. I've deleted some files in my cloned repo. I'm doing git pull, but they
+5. I've deleted some files in my cloned repo. I'm doing git pull, but they
do not reappear.
-Please do following in your cloned repo to restore deleted files:
+Please do the following in your cloned repo to restore deleted files:
git checkout some.file
+To restore all your deleted files do:
+
+git ls-files -d | xargs git checkout --
==============================================================================
-5. How can I add description for new repository?
+6. How can I add a description to a new repository?
+
+Do the following:
-Do following:
+echo "Some description" |ssh git@git.tld-linux.org setdesc packages/some_package
-ssh git@git.tld-linux.org setdesc packages/some_package "Some description"
+Ex.
+
+$ echo "kernel-desktop, a linux version optimised for the desktop" |ssh git@git.tld-linux.org setdesc packages/kernel-desktop
+New description is:
+kernel-desktop, a linux version optimised for the desktop
+$
+
+==============================================================================
+7. SPECS: What is obsolete now that we have GIT?
+
+Now that we use GIT for our own .spec files and projects, there're some things
+we do no longer need.
+
+a) Remove "# $Revision:" lines on top of a .spec file
+b) Remove the whole changelog from the bottom of a .spec file
+c) Remove "%define date %(echo `LC_ALL="C" date +"%a %b %d %Y"`)"
+d) Remove feedback stuff and all PLD related links
+e) Remove all the conditions for pld_release (%if "%{pld_release}" == "ti" ect.)
+
+Why all that removing?
+There're a couple of reasons why we don't want to keep these things in our
+specs.
+Most of them are strictly CVS related, like the Revision stuff. We don't need
+to artificially increase the size of our .spec files by having the whole
+changelog included in them. Use "git log", with all its sophisticated options,
+to visualise changes, make statistics etc.