Fix RTS syntax.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Fri, 23 Sep 2011 12:46:18 +0300
changeset 1002 234cd58cae56
parent 1001 4dd76ea12a6d
child 1003 4b8b3daac0db
Fix RTS syntax.
git.rst
ssh.rst
x.rst
--- /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