cSvn CGI Script

cSvn CGI Script – is a web frontend for Subversion™ Repositories

115 Commits   0 Branches   5 Tags   |
Index: doc/csvnrc.5.txt
===================================================================
--- doc/csvnrc.5.txt	(revision 43)
+++ doc/csvnrc.5.txt	(nonexistent)
@@ -1,230 +0,0 @@
-
-/**************************************************************
-  CSVNRC(5):
-  =========
-
-  NAME:
-  ----
-    csvnrc - runtime configuration for cSvn
-
-  SYNOPSIS:
-  --------
-    csvnrc contains all runtime settitngs for cSnv, including
-    the list of Subversion repositories.
-
-  LOCATION:
-  --------
-    The default location of csvnrc, defined at compile time,
-    is /etc/csvnrc.
-
- **************************************************************/
-
-/**************************************************************
-  GLOBAL SETTINGS:
- **************************************************************/
-
-css = '/.csvn/css/csvn.css';             /* Specify the css url */
-
-logo = '/.csvn/pixmaps/logo/csvn-banner-280x280.png';
-  /* Url which specifies the source of an image which will be used
-     as a logo on all cSvn pages.
-     Default value: "/logo/csvn.png".
-   */
-
-logo-alt = "SVN Repositories";
-logo-link = "https://radix.pro";
-  /* Url loaded when clicking on the cSvn logo image. If unspecified the
-     calculated url of the repository index page will be used.
-     Default value: none.
-   */
-
-main-menu-logo = '/.csvn/pixmaps/logo/SVN-logo-black-744x744.svg';
-
-favicon-path = '/.csvn/pixmaps/favicon';
-  /* Url used as link to a shortcut icon for cgit. It is suggested
-     to use the value "/favicon.ico" since certain browsers will
-     ignore other values.
-     Default value: "/".
-   */
-
-header = '/.csvn/html/header.html';
-  /* The content of the file specified with this option will be included
-     verbatim at the top of all pages. Default value: '/.csvn/header.html'.
-   */
-
-footer = '/.csvn/html/footer.html';
-  /* The content of the file specified with this option will be included
-     verbatim at the bottom of all pages (i.e. it replaces the standard
-     "generated by..." message. Default value: '/.csvn/footer.html'.
-   */
-
-
-owner = "Andrey V.Kosteltsev";
-author = "Andrey V.Kosteltsev";
-
-title = "Radix.pro SVN Repositories";
-  /* Text printed as heading on the repository index page.
-     Default value: "Subversion Repositories". Also this value
-     used to complete <title>Subversion Repositories</title>
-     declaration in the HTML head section.
-   */
-
-description = "Subversion repositories hosted at radix.pro (St.-Petersburg)";
-  /* Text printed below the heading on the repository index page.
-     Default value: "a fast webinterface for the Subversion SCM".
-   */
-
-keywords = "cSvn repositories";
-  /* Space separated keywords. May be overridden by repo.
-     Default value: "".
-   */
-
-copyright = "<span>&#169;</span> Андрей В. Костельцев, 2009 &#8211; 2020.";
-  /* HTML Text printed in footer. May be overridden by repo. */
-
-copyright-notice = "При использовании материалов указание источника обязательно.";
-  /* HTML Text printed in footer. May be overridden by repo. */
-
-
-home-page = "https://radix.pro/";
-
-snapshots = 'tar.xz';
-  /* Text which specifies the default set of snapshot formats that cSvn
-     generates links for. The value is a space-separated list of zero or
-     more of the values "tar", "tar.gz", "tar.bz2", "tar.xz", "tar.zst"
-     and "zip". Default value: none.
-   */
-
-
-//http-root = '/var/www/htdocs/csvn';
-//  /* Path to HTML documents root.
-//     NOTE: http-root in server filesystem is defined by the directory
-//           where csvn.cgi sctipt is placed.
-//           and http-root is an optional variable
-//   */
-
-
-svn-utc-offset = +0300;
-  /* SVN setver's UTC-offset in ISO 8601 format */
-  /*
-     https://ru.wikipedia.org/wiki/ISO_8601
-     svn log       в текстовом формате выдает даты в локальном времени (time + UTC-offset)
-     svn log --xml выдает UTC время
-
-     при чтении текстовых логов удаленно, например, когда cSvn сервер WEB-клиента находится
-     на другой машине недели сам SVN-сервер, необходимо знать UTC-offset SVN-сервера,
-     а не той машины где крутится cSvn сервер WEB-клиента.
-     На сервере, получить TZ можно с помощью команды:
-
-       $ date +%z
-   */
-
-//svn-root = '/u3/scm/svn';
-//  /* Path to Subversion repositories. */
-//  /*
-//     Здесь надо заметить, что листать репозитории непосрепственно в файловой
-//     системе где они расположены можно только с помощью обычных linux утилит.
-//     Например, для проверки наличия репозиториев или автоматического составления
-//     списка репозиториев, находящихся на сервере.
-//     С помощью же site-url = 'https://csvn.radix.pro листать сами репозитории:
-//
-//       $ svn ls https://csvn.radix.pro/
-//
-//     не получится. Так можно листать только внутренности репозиториев:
-//
-//       $ svn ls https://csvn.radix.pro/build-system
-//       branches/
-//       tags/
-//       trunk/
-//
-//     Таким образом если переменная svn-root задана, то есть и возможность
-//     автоматического составления списка репозиториев.
-//
-//     Если переменная задана, но cSvn сервер не видит этих каталогов в его локальной
-//     файловой системе, то можно предположить, что cSvn работает с удаленным SVN-сервером
-//     и тогда локальное время из текстовых логов можно переводить в UTC время сервера SVN
-//     только с помощью переменной svn-utc-offset.
-//  */
-
-//site-url = "https://csvn.radix.pro";
-
-checkout-prefix-readonly = 'svn://radix.pro';
-checkout-prefix          = 'svn+ssh://svn@radix.pro';
-  /* prefixes used for svn checkout */
-
-
-page-size = 50; /* string/integer 10 - 200 value. Default: page-size = 200 */
-
-syntax-highlight-css = '_csvn.css';
-  /* CSS file in the directory defined in header.html */
-
-
-/**************************************************************
-  SECTION SYNTAX:
- **************************************************************/
-
-section "name" {
-}
-
-/**************************************************************
-  REPO SYNTAX:
- **************************************************************/
-
-repo 'path' { /* 'path' - basename of directory in the svn-root directory */
-  owner = "Andrey V.Kosteltsev";
-  title = "Radix Build System";
-  description = "Source repository of the Radix Build System";
-  keywords = "cSvn repositories toolchains";
-  home-page = "https://radix.pro/build-system/";
-  logo = '/.csvn/pixmaps/file-name.svg';
-}
-
-/**************************************************************
-  SYNTAX:
-  ------
-  var = 'string' - с одинарными кавычками это путь
-  var = "string" - с двойными кавычками это utf8 строка, которая может транслироваться в HTML,
-                   например символы типа & могут быть заменены на &amp;
-                   - незначащие пробелы в начале и в конце удаляются
-                   - промежуточные пробелы заменяются одним пробелом
-
-  ключевые слова:      section, repo
-  ключевые переменные: все глобальные переменные, а также переменные в
-                       блоке repo.
-
-  true = 1
-  false = 0
-
- **************************************************************/
-
-
-/**************************************************************
-  Тэги ветки префиксы:
-
-  trunk='trunk';
-  branches-dir='branches';
-  tags-dir='tags';
-
-  tag-prefix="v"; /* префикс номеров версий */
-
-  Например, если в каталоге tags-dir все каталоги имеют имена
-  типа v1.0.0, v1.0.2, ...
-  то при создании имен snapshot...tar.xz можно удалять tags-prefix:
-
-    имеем /tags/v1.0.0
-    удаляем tags-prefix=v
-    то есть version=basename( /tags/1.0.1 ), а не basename( /tags/v1.0.1 )
-    и создаем имя:
-    'reponame' + '-' + 'version' + '.' + 'snapshots'
-
-  тогда если репозиторий называется build-system, то имена
-  приготавливаемых snapshots будут выглядеть так:
-
-  build-system-1.0.0.tar.xz
-
-  то есть tags-prefix удаляется.
-
-  если tags-prefix не назначен, то просто берется каталог /tags/1.0.0
-  и удалять tags-prefix нет необходимости.
-
- **************************************************************/
Index: doc/content-length.txt
===================================================================
--- doc/content-length.txt	(revision 43)
+++ doc/content-length.txt	(nonexistent)
@@ -1,37 +0,0 @@
-HTTP/1.1 200 OK
-Date: Tue, 21 May 2002 12:34:56 GMT
-Content-Type: text/html
-Content-Length: 102
-
-<html>
-<head>
-<title>Content-Length Example</title>
-</head>
-<body>
-Content-Length: 102
-</body>
-</html>
-
-От первого символа '<' (<html>) до последнего символа '>' (</html>)
-включительно есть ровно 102 байта.
-
-The Content-Length: The length of the request body in octets (8-bit bytes).
-
-В качестве альтернативы можно опустить заголовок Content-Length
-и использовать фрагментированный заголовок Transfer-Encoding.
-
-Если отсутствуют заголовки Content-Length и Transfer-Encoding,
-то в конце ответа соединение должно быть закрыто.
-
-Нам достаточно типов: text/html и application/json.
-Заголовок Transfer-Encoding нам не нужен.
-
-может понадобиться только:
-Content-Encoding: The type of encoding used on the data. See HTTP compression.
-например:
-Content-Encoding: gzip
-
-
-https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
-
-https://www.jmarshall.com/easy/http/#headerlines
Index: doc/commit-messages.txt
===================================================================
--- doc/commit-messages.txt	(revision 43)
+++ doc/commit-messages.txt	(nonexistent)
@@ -1,73 +0,0 @@
-
-Capitalized, short (50 chars or less) summary
-
-More detailed explanatory text, if necessary.  Wrap it to about 72
-characters or so.  In some contexts, the first line is treated as the
-subject of an email and the rest of the text as the body.  The blank
-line separating the summary from the body is critical (unless you omit
-the body entirely); tools like rebase can get confused if you run the
-two together.
-
-Write your commit message in the imperative: "Fix bug" and not "Fixed bug"
-or "Fixes bug."  This convention matches up with commit messages generated
-by commands like git merge and git revert.
-
-Further paragraphs come after blank lines.
-
-- Bullet points are okay, too
-
-- Typically a hyphen or asterisk is used for the bullet, followed by a single space, with blank lines in between, but conventions vary here
-
-- Use a hanging indent
-==============================================================
-
-Первая строка с заглавной буквы (не более 50-и символов)
-
-Более детальное пояснение, если оно необходимо, начинается
-с отступом в одну пустую строку. Строки пояснения не должны
-быть длиннее 72-х символов. В любом контексте, первая строка
-сообщения рассматривается как заголовок (.commit-subject)
-иными словами как subject of an email. Остальной текст
-рассматривается как тело сообщения (body of an email).
-
-Каждый параграф отделяется пустой строкой.
-
- - Пункты списка тоже допустимы
-
- - Обычно они отмечаются звездочкой '*' или знаком минус '-',
-   сопровождающимся одним пробелом. Пункты списка также отделяются
-   друг от друга пустой строкой. Однако это не обязательно.
-
- - Лучше использовать отступ.
-
-Для отображения заголовка сообщения в Web-интерфейсе используется
-класс <div class='commit-subject'>, для тела сообщения - класс
-<div class='commit-msg'>.
-
-
------------------------------------------------------------------
-Нужны функции чтения commit сообщений, упорядочивающие формат
-вывода с использованием классов:
-
-<div class='commit-subject'>device: Fix codying style</div>
-<div class='commit-msg'>
- Single line statements don't require curly braces.
-</div>
-
-Но с таким подходом стоит задуматься о теге <pre> для тела сообщения.
-
-<div class='commit-subject'>device: Fix codying style</div>
-<pre class='commit-msg'>
- Single line statements don't require curly braces.
-</pre>
-
-Но это чревато большим количеством работы над функциями форматирования.
-
-можно сделать как в cGit Commit message (Expand/Collapse)
-в списке реп тоже можно использовать (Expand/Collapse) в индексе для
-title/description репозиториев.
-
-
-
-
-
Index: doc/install.txt
===================================================================
--- doc/install.txt	(revision 43)
+++ doc/install.txt	(nonexistent)
@@ -1,344 +0,0 @@
-
-Requirements
-============
-
-libpcre32    Perl Compatible Regular Expressions [https://www.pcre.org/]
-librt        GNU C Library [https://www.gnu.org/software/libc/]
-libm         GNU C Library [https://www.gnu.org/software/libc/]
-libmd4c      MD4C [https://github.com/mity/md4c/]
-libmd4c-html MD4C [https://github.com/mity/md4c/]
-libmagic     File (a utility to determine file type) [ftp://ftp.astron.com/pub/file/]
-libxml2      The XML C parser [http://www.xmlsoft.org/]
-
-Subversion   Apache Subversion [https://subversion.apache.org/]
-uWsgi        The uWSGI project [https://uwsgi-docs.readthedocs.io/en/latest/]
-Nginx        an HTTP and reverse proxy server [https://nginx.org/en/]
-
-
-cSvn
-====
-
-Download sources
-----------------
-
-tar xJvf csvn-0.0.9.tar.xz
-
-cd csvn-0.0.9
-
-./bootstrap
-
-
-Bootstrap script
-----------------
-
-The bootstrap script aspecialy created for autotools install automation. To install autotools into source directory
-on build machine (i.e. when build == host) the bootstrap script can be run without arguments.
-
-./bootstrap
-
-In this case autotools will be installed from current root file system.
-
-For the cross environment the --target-dest-dir options allows to install some stuf from development root file system:
-
-TARGET_DEST_DIR=/home/developer/prog/trunk-672/dist/.s9xx-glibc/enybox-x2 \
-  ./bootstrap --target-dest-dir=${TARGET_DEST_DIR}
-
-For example, in this case the aclocal.m4 script will be collected from the ${TARGET_DEST_DIR}/usr/share/aclocal directory.
-
-
-Configuring sources
--------------------
-
-#!/bin/sh
-
-./configure --prefix=/usr \
-            --sysconfdir=/etc \
-            --with-config=/etc/csvnrc \
-            --with-controldir=/etc/rc.d \
-            --with-logrotatedir=/etc/logrotate.d \
-            --with-scriptdir=/var/www/htdocs/csvn \
-            --with-homedir=/var/lib/csvn \
-            --with-logdir=/var/log \
-            --with-piddir=/var/run
-
-Install on the build machine
-----------------------------
-
-make
-make install
-
-
-Cross compilation example
--------------------------
-
-TARGET_DEST_DIR=/home/developer/prog/trunk-672/dist/.s9xx-glibc/enybox-x2
-TOOLCHAIN_PATH=/opt/toolchains/aarch64-S9XX-linux-glibc/1.1.4/bin
-TARGET=aarch64-s9xx-linux-gnu
-
-./bootstrap --target-dest-dir=${TARGET_DEST_DIR}
-
-PKG_CONFIG=/usr/bin/pkg-config \
-PKG_CONFIG_PATH=${TARGET_DEST_DIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig:${TARGET_DEST_DIR}/usr/share/pkgconfig \
-PKG_CONFIG_LIBDIR=${TARGET_DEST_DIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig:${TARGET_DEST_DIR}/usr/share/pkgconfig \
-STRIP="${TOOLCHAIN_PATH}/${TARGET}-strip" \
-CC="${TOOLCHAIN_PATH}/${TARGET}-gcc --sysroot=${TARGET_DEST_DIR}" \
-./configure --prefix=/usr
-  --build=x86_64-pc-linux-gnu \
-  --host=${TARGET} \
-  --sysconfdir=/etc \
-  --with-config=/etc/csvnrc \
-  --with-controldir=/etc/rc.d \
-  --with-logrotatedir=/etc/logrotate.d \
-  --with-scriptdir=/var/www/htdocs/csvn \
-  --with-homedir=/var/lib/csvn \
-  --with-logdir=/var/log \
-  --with-piddir=/var/run
-
-make
-make install DESTDIR=${TARGET_DEST_DIR}
-
-Also we can make use of additional variables such as CFLAGS, LDFLAGS:
-
-LDFLAGS="-L${TARGET_DEST_DIR}/lib -L${TARGET_DEST_DIR}/usr/lib"
-TARGET_INCPATH="-L${TARGET_DEST_DIR}/usr/include"
-CFLAGS="${TARGET_INCPATH}"
-CPPFLAGS="${TARGET_INCPATH}"
-
-
-Directories permission
-======================
-
-The system user, on whose behalf the Nginx server is launched, must have permissions to access the directory
-in which the cSvn CGI script was installed:
-
-chown -R nginx:nginx /var/www/htdocs/csvn
-
-If you configured access to your repositories on behalf system user named svn, then it would be good to
-grant permissions to svn user to acces to the directory /var/lib/csvn/ which is a home of csvnd daemon:
-
-chown -R svn:svn /var/lib/csvn
-
-and also run the csvnd daemon on behalf of that svn user.
-
-To run the csvnd daemon on systems with BSD-like initialization such as Slackware we have to add following
-lines to the rc.M and rc.6 scripts correspondengly:
-
-/etc/rc.d/rc.M:
-
-# Start csvnd server:
-if [ -x /etc/rc.d/rc.csvnd ]; then
-  /etc/rc.d/rc.csvnd start
-fi
-
-
-/etc/rc.d/rc.6:
-
-# Stop csvnd server:
-if [ -x /etc/rc.d/rc.csvnd ]; then
-  /etc/rc.d/rc.csvnd stop
-fi
-
-
-For systems which uses systemd initialization you have to setup your own systemd unit like following:
-
-/etc/systemd/system/csvnd.service:
-
-[Unit]
-Description=The cSvn daemon
-After=network.target
-
-[Service]
-PIDFile=/var/run/csvnd.pid
-ExecStart=/usr/sbin/csvnd --daemonize --inotify --config=/etc/csvnrc
-ExecReload=/bin/kill -s HUP $MAINPID
-ExecStop=/bin/kill -s TERM $MAINPID
-
-[Install]
-WantedBy=multi-user.target
-
-
-uWsgi
-=====
-
-If we use option --with-scriptdir=/var/www/htdocs/csvn on configuring stage then the cSvn CGI script
-will be installed into /var/www/htdocs/csvn/ directory. In this case the /etc/uwsgi/csvn.ini file
-can be filled as follow:
-
-/etc/uwsgi/csvn.ini:
-
-[uwsgi]
-master          = true
-plugins         = cgi
-socket          = /run/uwsgi/%n.sock
-uid             = nginx
-gid             = nginx
-procname-master = uwsgi csvn
-processes       = 1
-threads         = 2
-cgi             = /var/www/htdocs/csvn/csvn.cgi
-
-Where /var/www/htdocs/csvn/csvn.cgi is the full name of installed cSvn CGI script.
-
-To run the uWSGI daemon for cSvn we can make use following start/stop script:
-
-/ets/rc.d/rc.csvn-uwsgi:
-
-#!/bin/sh
-#
-# uWSGI daemon control script.
-#
-
-CONF=csvn
-BIN=/usr/bin/uwsgi
-CONFDIR=/etc/uwsgi
-PID=/var/run/$CONF-uwsgi.pid
-
-uwsgi_start() {
-  # Sanity checks.
-  if [ ! -r $CONFDIR/csvn.ini ]; then # no config files, exit:
-    echo "There are config files in $CONFDIR directory. Abort."
-    exit 1
-  fi
-
-  if [ -s $PID ]; then
-    echo "uWSGI for cSvn appears to already be running?"
-    exit 1
-  fi
-
-  echo "Starting uWSGI for cSvn server daemon..."
-  if [ -x $BIN ]; then
-    /bin/mkdir -p /run/uwsgi
-    /bin/chown nginx:nginx /run/uwsgi
-    /bin/chmod 0755 /run/uwsgi
-    $BIN --thunder-lock --pidfile $PID --daemonize /var/log/csvn-uwsgi.log --ini $CONFDIR/$CONF.ini
-  fi
-}
-
-uwsgi_stop() {
-  echo "Shutdown uWSGI for cSvn gracefully..."
-  /bin/kill -INT $(cat $PID)
-  /bin/rm -f $PID
-}
-
-uwsgi_reload() {
-  echo "Reloading uWSGI for cSvn configuration..."
-  kill -HUP $(cat $PID)
-}
-
-uwsgi_restart() {
-  uwsgi_stop
-  sleep 3
-  uwsgi_start
-}
-
-case "$1" in
-  start)
-    uwsgi_start
-    ;;
-  stop)
-    uwsgi_stop
-    ;;
-  reload)
-    uwsgi_reload
-    ;;
-  restart)
-    uwsgi_restart
-    ;;
-  *)
-  echo "usage: `basename $0` {start|stop|reload|restart}"
-esac
-
-To run this daemon on systems with BSD-like initialization such as Slackware
-we have to add following lines to the /etc/rc.d/rc.M and /etc/rc.d/rc.6 scripts
-correspondingly
-
-/etc/rc.d/rc.M:
-
-# Start uWSGI for cSvn server:
-if [ -x /etc/rc.d/rc.csvn-uwsgi ]; then
-  /etc/rc.d/rc.csvn-uwsgi start
-fi
-
-
-/etc/rc.d/rc.6:
-
-# Stop uWSGI for cSvn server:
-if [ -x /etc/rc.d/rc.csvn-uwsgi ]; then
-  /etc/rc.d/rc.csvn-uwsgi stop
-fi
-
-
-Nginx
-=====
-
-
-/etc/nginx/nginx.conf:
-
-    include /etc/nginx/vhosts/csvn.example.org.conf;
-
-
-/etc/nginx/vhosts/csvn.example.org.conf:
-
-#
-# cSvn server:
-#
-
-    server {
-        listen 80;
-        server_name csvn.example.org;
-        return 301 https://csvn.example.org$request_uri;
-    }
-
-    server {
-        listen 443 ssl;
-        server_name csvn.example.org;
-        root /var/www/htdocs/csvn;
-
-        charset UTF-8;
-
-        #
-        # see:
-        #   https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security ,
-        #   https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html
-        #
-        # see also: http://classically.me/blogs/how-clear-hsts-settings-major-browsers
-        # and do not include includeSubdomains; parameter into line:
-        #
-        add_header Strict-Transport-Security "max-age=63072000; preload";
-
-        error_log /var/log/nginx/csvn.example.org-error.log;
-        access_log /var/log/nginx/csvn.example.org-access.log;
-
-        keepalive_timeout        60;
-        ssl_certificate          /etc/letsencrypt/live/csvn.example.org/fullchain.pem;
-        ssl_certificate_key      /etc/letsencrypt/live/csvn.example.org/privkey.pem;
-        ssl_trusted_certificate  /etc/letsencrypt/live/csvn.example.org/chain.pem;
-        ssl_protocols            SSLv3 TLSv1 TLSv1.1 TLSv1.2;
-        ssl_ciphers              "RC4:HIGH:!aNULL:!MD5:!kEDH";
-
-
-        # Serve static files with nginx
-        location ~* ^.+(favicon.ico|robots.txt) {
-           root /var/www/htdocs/csvn;
-           expires 30d;
-        }
-
-        location / {
-            try_files $uri @csvn;
-        }
-
-        location = /robots.txt {
-            allow all;
-            log_not_found off;
-            access_log off;
-        }
-
-        location @csvn {
-            gzip off;
-            include uwsgi_params;
-            uwsgi_modifier1 9;
-            uwsgi_pass unix:/run/uwsgi/csvn.sock;
-        }
-    }
-
-
Index: doc/svn-cheatsheet.txt
===================================================================
--- doc/svn-cheatsheet.txt	(revision 43)
+++ doc/svn-cheatsheet.txt	(nonexistent)
@@ -1,76 +0,0 @@
-
-Last commit:
-svn log --limit 1 svn://radix.pro/micro
-
-Last commit in xml format:
-svn log --xml --limit 1 svn://radix.pro/micro
-
-Log 84:115 no more 5 commits in xml format:
-svn -r84:115 log --xml --limit 5 svn://radix.pro/build-system/trunk/
-
-Log in date range:
-svn -r{2007-01-03}:{2020-01-01} log --xml --limit 5 svn://radix.pro/build-system/trunk/
-
-NOTE: do not use svn log --xml --incremental такой лог не содержит заголовка и хвоста
-
-<?xml version="1.0" encoding="UTF-8"?>
-<log>
-
-</log>
-
-только <logentry>'s .
-Хотя в некоторых случаях это может быть полезно
-
-
-date in xml:
-2015-03-17T07:58:41.512824Z
-
-date in log:
-2015-03-17 10:58:41 +0300 (Tue, 17 Mar 2015)
-
-Чтобы получить UTC дату каккого либо комита
-надо:
-
-svn propget --revprop -r84 svn:date svn://radix.pro/build-system/trunk/
-2015-10-21T12:59:04.704166Z
-
-SVN log в xml формате дает дату в UTC:
-2015-10-21T12:59:04.704166Z
-если не указывать --xml формат, то в логе даты будут вот такие
-2015-03-17 10:58:41 +0300 (Tue, 17 Mar 2015)
-и тут utc offset зависит от тайм зоны сервера SVN
-
-текущий utcoffset на сервере можно получить с помощью bash
-$ date +%z
-+0300
-
-таким образом если взять дату из XML лога (а она в UTC зоне), то
-для вывода даты в текущей зоне надо к UTC дате прибавить utcoffset
-+0300 - +03 часа и 00 минут
-+0330 - +03 часа и 30 минут
-
-
-cat file:
-$ svn cat svn+ssh://svn@radix.pro/micro/trunk/Makefile
-
-Create Repository
-=================
-
-# svnadmin create /u3/scm/svn/csvn
-# chown -R svn:svn /u3/scm/svn/csvn
-# chmod -R g+w /u3/scm/svn/csvn
-
-$ svn --username=kx mkdir svn+ssh://svn@radix.pro/csvn/branches -m "Directory for developer branches has been created."
-$ svn --username=kx mkdir svn+ssh://svn@radix.pro/csvn/tags     -m "Directory for tags has been created."
-$ svn --username=kx mkdir svn+ssh://svn@radix.pro/csvn/trunk    -m "Empty trunk has been created."
-
-$ svn --username=kx co svn+ssh://svn@radix.pro/csvn/trunk
-
-section "Tools" {
-  repo 'csvn' {
-    owner = "Andrey V.kosteltsev";
-    title = "cSvn CGI Script";
-    description = "cSvn CGI Script &#8211; is a web frontend for Subversion&#8482; Repositories";
-    home-page = "https://radix.pro/";
-  }
-}