Fix RTS syntax.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/git.rst Fri Sep 23 12:46:18 2011 +0300
@@ -0,0 +1,351 @@
+.. -*- coding: utf-8; -*-
+
+======
+ Git.
+======
+
+Setup git.
+==========
+
+Debian.
+-------
+
+For Etch Degian release use git-core package from backports,
+old 1.4 version of git very dumb compared to new version 1.5::
+
+ $ sudo apt-get install git-core
+
+After install setup some options::
+
+ $ git config --global user.name "Oleksandr Gavenko"
+ $ git config --global user.mail "gavenkoa@gmail.com"
+ $ cat ~/.gitconfig
+ [user]
+ name = Oleksandr Gavenko
+ mail = gavenkoa@gmail.com
+
+Windows.
+--------
+
+No official support for Windows OS.
+
+Cygwin.
+-------
+
+ $ setup.exe -p git
+
+git over proxy.
+===============
+
+Only http:// protocol support proxy (not git://)::
+
+ $ export http_proxy="http://username:password@proxy:port/"
+ $ git clone http://github.com/$user/$proj.git $proj
+
+You can store proxy settings under repository local config file::
+
+ $ git config http.proxy http://$user:$passwd@$ip:$port
+
+Start your project.
+===================
+
+Setup proj space on fs::
+
+ $ mkdir proj
+ $ cd proj
+ $ git init
+ Initialized empty Git repository in /home/user/tmp/proj/.git/
+ $ ls -a
+ . .. .git
+
+Add file, make changes, commit all::
+
+ $ emacs Makefile
+ ... C-x C-c
+ $ emacs app.c
+ ... C-x C-c
+ $ git add Makefile app.c
+ $ git status
+ # On branch master
+ #
+ # Initial commit
+ #
+ # Changes to be committed:
+ # (use "git rm --cached <file>..." to unstage)
+ #
+ # new file: Makefile
+ # new file: app.c
+ #
+
+or just::
+
+ $ git add .
+
+Commit newlly added file::
+
+ $ git commit
+ ... Write message log ...
+ Created initial commit 2169263: My first commit massage.
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+ create mode 100644 app.c
+
+Undo tracking added file.
+=========================
+
+You do::
+
+ $ git add badfile
+ $ git status
+ # On branch master
+ # Changes to be committed:
+ # (use "git reset HEAD <file>..." to unstage)
+ #
+ # new file: badfile
+ #
+
+To stop tracking badfile do::
+
+ $ git rm --cached badfile
+ $ git status
+ # On branch master
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # file
+ nothing added to commit but untracked files present (use "git add" to track)
+
+or::
+
+ $ git reset badfile
+
+Doing changes.
+==============
+::
+
+ $ printf "clean:\n<TAB>rm $(wildcard *.o)\n" >>Makefile
+ $ git diff
+ diff --git a/Makefile b/Makefile
+ index e84f7e9..cd2438a 100644
+ --- a/Makefile
+ +++ b/Makefile
+ @@ -1,2 +1,5 @@
+ all:
+ @echo XXX
+ exit 1
+ +
+ +clean:
+ + rm -f *.o
+ $ git add Makefile
+ $ git commit -m "Added clean target."
+ Created commit 11272b9: Added clean target.
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ create mode 100644 file
+
+or just::
+
+ $ git commit -a -m "Added clean target."
+
+git analog of 'hg incoming'.
+============================
+
+git does not directly support such feature. You can emulate it by::
+
+ $ git fetch
+ $ git log master..origin/master # or just '..origin/master'
+
+By previous commands you grab changes from remote server! You can apply them::
+
+ TODO
+ $ git merge
+
+git analog of 'hg outgoing'.
+============================
+
+git does not directly support such feature. You can emulate it by::
+
+ $ git fetch
+ $ git log origin/master..master # or just 'origin/master..'
+
+Debug git network operation.
+============================
+
+Git uses libcurl for network operation::
+
+ $ export GIT_CURL_VERBOSE=1
+ $ git ...
+
+Using git to work with SVN offline.
+===================================
+
+Prepare SVN and git utilities::
+
+ $ sudo apt-get svn git-core git-svn
+
+Making SVN repo::
+
+ $ cd $HOME/tmp
+ $ svnadmin create svn-repo
+ $ svn co file://$HOME/tmp/svn-repo svn-devel
+ $ cd svn-devel
+ $ mkdir tags trunk branches
+ $ svn add *
+ A branches
+ A tags
+ A trunk
+ $ cd trunk/
+ $ printf "all:\n echo XXX\n" >Makefile
+ $ printf "int main() {return 0;}" >main.c
+ $ svn add *
+ $ cd ..
+ $ svn st
+ A trunk
+ A trunk/main.c
+ A trunk/Makefile
+ A branches
+ A tags
+ $ svn ci -m init
+ Adding branches
+ Adding tags
+ Adding trunk
+ Adding trunk/Makefile
+ Adding trunk/main.c
+ Transmitting file data ..
+ $ svn cp -m v0.0 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/tags/v0.0
+ $ svn cp -m v0.1 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/branches/v0.1
+
+Moving SVN changset to git repo::
+
+ $ cd $HOME/tmp
+ $ git svn init file://$HOME/tmp/svn git-repo
+ $ ls -a
+ . .. .git
+ $ git svn fetch
+ A trunk/main.c
+ A trunk/Makefile
+ W: +empty_dir: branches
+ W: +empty_dir: tags
+ r1 = 52ccd9882979dd53ec198dbac108783ec660410f (git-svn)
+ A tags/v0.0/main.c
+ A tags/v0.0/Makefile
+ r2 = 8ec8a772bb6f37ace56b3649066dc84e481ed427 (git-svn)
+ M trunk/Makefile
+ r3 = 2c169ff409ed504dd6a092b1e302beb3fd94871e (git-svn)
+ A branches/v0.1/main.c
+ A branches/v0.1/Makefile
+ r4 = e68d76f4ba6beea4b9059c1884c1f38ce10831a7 (git-svn)
+ M trunk/Makefile
+ r5 = cdde63974454b13ac53f2eeb201aa76c49fd875c (git-svn)
+ Checked out HEAD:
+ file:///home/sasha/tmp/svn r5
+
+or (in old git version)::
+
+ $ git svn clone file://$HOME/tmp/svn git-repo
+
+Making changes in svn::
+
+ $ cd $HOME/tmp/svn-devel/trunk
+ $ echo ".PHONY: clean" >>Makefile
+ $ svn ci -m "Added clean to phony."
+ Sending trunk/Makefile
+ Transmitting file data .
+ Committed revision 6.
+
+Making committed in git::
+
+ $ cd $HOME/tmp/git-repo/trunk
+ $ echo ".PHONY: all" >>Makefile
+ $ echo "int foo(int x) {return x+x;}" >>main.c
+ $ git status
+ # On branch master
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ #
+ # modified: Makefile
+ # modified: main.c
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ git commit -a -m "Bug fixed."
+ Created commit 222d399: Bug fixed.
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+
+Getting changes from SVN to git::
+
+ $ git svn rebase
+ M trunk/Makefile
+ r6 = 8165e9bfb38e9df09a7313d19606ec227629b670 (git-svn)
+ First, rewinding head to replay your work on top of it...
+ Applying Bug fixed.
+ error: patch failed: trunk/Makefile:6
+ error: trunk/Makefile: patch does not apply
+ Using index info to reconstruct a base tree...
+ Falling back to patching base and 3-way merge...
+ Auto-merged trunk/Makefile
+ CONFLICT (content): Merge conflict in trunk/Makefile
+ Failed to merge in the changes.
+ Patch failed at 0001.
+
+ When you have resolved this problem run "git rebase --continue".
+ If you would prefer to skip this patch, instead run "git rebase --skip".
+ To restore the original branch and stop rebasing run "git rebase --abort".
+
+ rebase refs/remotes/git-svn: command returned error: 1
+ $ git add Makefile
+ $ git rebase --continue
+ Applying Bug fixed.
+
+and return all from git to SVN::
+
+ $ git svn dcommit
+ Committing to file:///home/sasha/tmp/svn ...
+ M trunk/Makefile
+ M trunk/main.c
+ Committed r7
+ M trunk/main.c
+ M trunk/Makefile
+ r7 = 68e782c8d06635f2db4dd69b9ca8599f99da22e2 (git-svn)
+ No changes between current HEAD and refs/remotes/git-svn
+ Resetting to the latest refs/remotes/git-svn
+
+See what going to SVN repo::
+
+ $ cd $HOME/tmp/svn-devel/trunk
+ $ svn diff -r BASE:HEAD
+ Index: Makefile
+ ===================================================================
+ --- Makefile (working copy)
+ +++ Makefile (revision 7)
+ @@ -6,4 +6,4 @@
+ .o: .c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+ -.PHONY: clean
+ +.PHONY: all clean
+ Index: main.c
+ ===================================================================
+ --- main.c (working copy)
+ +++ main.c (revision 7)
+ @@ -2,3 +2,4 @@
+ {
+ return 0;
+ }
+ +int foo(int x) {return x+x;}
+ $ svn up
+ U Makefile
+ U main.c
+ Updated to revision 7.
+
+gitk.
+=====
+
+gitk - The git repository browser. See gitk(1).
+
+Installing::
+
+ $ sudo apt-get instal gitk
+
+Using::
+
+ $ cd /path/to/git-repo
+ $ gitk
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ssh.rst Fri Sep 23 12:46:18 2011 +0300
@@ -0,0 +1,116 @@
+-*- coding: utf-8 -*-
+
+===========
+ SSH/sshd.
+===========
+
+Maintaining key pair.
+=====================
+::
+
+ $ ssh-keygen -t dsa # for DSA
+ $ ssh-keygen -t rsa # for RSA
+ $ ssh-keygen -t dsa -C comment # put own comment instead user@host
+ $ ssh-keygen -t dsa -f my_dsa_key # store priv key under my_dsa_key
+ # and pub key under my_dsa_key.pub
+
+ $ ssh-keygen -y -f my_dsa_key # recover pub key from priv
+
+ $ ssh-keygen -p -N "newphrase" -P "oldphrase" -f ~/.ssh/id_dsa
+ # change passphrase of priv key
+
+ $ ssh $user@$host cat ">>" "~/.ssh/authorized_keys" <~/.ssh/id_rsa.pub
+ # public pub key on remote host
+
+Shell login.
+============
+::
+
+ $ ssh $user@$host
+ $ ssh $user@$host:$port
+
+ $ ssh -i ~/.ssh/my_dsa_key $user@$host
+
+or::
+
+ $ ssh -l $user $host
+ $ ssh -l $user $host:$port
+
+X session.
+==========
+::
+
+ $ ssh -X $user@$host
+
+Multiply private keys.
+======================
+
+ssh try use all listen keys::
+
+ $ ssh -i ./priv1 -i ./priv2 $user@$host
+
+or place in ~/.ssh/config::
+
+ Host *
+ IdentityFile ~/.ssh/identity # standard search path for protocol ver. 1
+ IdentityFile ~/.ssh/id_dsa # standard search path for RSA key protocol ver. 2
+ IdentityFile ~/.ssh/id_rsa # standard search path for DSA key protocol ver. 2
+ IdentityFile ~/.ssh/my_dsa
+ IdentityFile ~/.ssh/another_dsa
+
+or per host private key::
+
+ Host host1 # alias, that user provide at CLI
+ HostName host1.example.com # real host name to log into
+ User iam
+ IdentifyFile ~/.ssh/iam_priv_dsa
+ Host host2 # alias, that user provide at CLI
+ HostName 192.168.1.2 # real host IP to log into
+ User admin
+ IdentifyFile ~/.ssh/admin_priv_dsa
+
+Installing sshd on Cygwin.
+==========================
+
+ * Install base packages and openssh.
+ * Set CYGWIN env var to 'binmode tty ntsec'.
+ * Create Windows user.
+ * Recreate /etc/passwd::
+ $ mkpasswd -l -u user >>/etc/passwd
+ or::
+ $ mkpasswd -l >/etc/passwd
+
+ * Register sshd::
+ $ mkdir -p /home/user
+ $ ssh-host-config -y
+ * Start::
+ $ net start sshd
+ or::
+ $ cygrunsrv -S sshd
+
+ * Check from remote host::
+ $ ssh $gygwin_host -l user
+
+To stop service use::
+
+ $ net stop sshd
+
+or::
+
+ $ cygrunsrv -E sshd
+
+Запускаем SSH server на правах произвольного пользователя.
+----------------------------------------------------------
+
+ * Создаем пользователя, например с именем user, задаем ему пароль,
+ права (т.е. в какие группы будет входить) и т.д., пользователя не блокируем.
+ * В консоле MMC добавляем оснастку "Параметры безопасности.". Модифицируем параметры:
+
+ "Параметры безопасности."->"Локальные политики."->"Назначение прав пользователя."
+ ->"Вход в качестве службы."->добавить 'user'.
+
+ "Параметры безопасности."->"Локальные политики."->"Назначение прав пользователя."
+ ->"Отклонить локальный вход."->удалить 'user' (если был установлен).
+
+ XXX "Принудительное удаленнон завершение."
+
--- a/x.rst Mon Sep 19 23:31:41 2011 +0300
+++ b/x.rst Fri Sep 23 12:46:18 2011 +0300
@@ -77,10 +77,8 @@
'-name' option. This element is optional (can be substituated
with wildcard).
restriction
-
Class names or name of specific class instance. The classes
names conventionally start with an upper-case letter.
-
resource
The name of the resource whose value is to be changed.
Resources are typically lowercase with uppercase