]> TLD Linux GIT Repositories - TLD.git/blobdiff - git-howto.txt
- updated
[TLD.git] / git-howto.txt
index 38e1e05b5f60b3327010bf83649875b804ad49e8..e238ee45194e097de3580c30db5726bacca64f5f 100644 (file)
@@ -1,18 +1,90 @@
-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
 
@@ -43,7 +115,7 @@ repository before pushing all changes to server. You don't need to push each
 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?
 
@@ -64,16 +136,16 @@ b) The second way is to remove locally your repository and re-clone it. Then
 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
@@ -81,17 +153,47 @@ cd ~/repositories/repo_name.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.