##// END OF EJS Templates
Rename various strings for tests
Bradley M. Kuhn -
r4206:703d3208 kallithea-2.2.5-r...
parent child Browse files
Show More
@@ -1,42 +1,42 b''
1 language: python
1 language: python
2 python:
2 python:
3 - "2.5"
3 - "2.5"
4 - "2.6"
4 - "2.6"
5 - "2.7"
5 - "2.7"
6
6
7 env:
7 env:
8 - TEST_DB=sqlite:////tmp/rhodecode_test.sqlite
8 - TEST_DB=sqlite:////tmp/kallithea_test.sqlite
9 - TEST_DB=mysql://root@127.0.0.1/rhodecode_test
9 - TEST_DB=mysql://root@127.0.0.1/kallithea_test
10 - TEST_DB=postgresql://postgres@127.0.0.1/rhodecode_test
10 - TEST_DB=postgresql://postgres@127.0.0.1/kallithea_test
11
11
12 services:
12 services:
13 - mysql
13 - mysql
14 - postgresql
14 - postgresql
15
15
16 # command to install dependencies
16 # command to install dependencies
17 before_script:
17 before_script:
18 - mysql -e 'create database rhodecode_test;'
18 - mysql -e 'create database kallithea_test;'
19 - psql -c 'create database rhodecode_test;' -U postgres
19 - psql -c 'create database kallithea_test;' -U postgres
20 - git --version
20 - git --version
21
21
22 before_install:
22 before_install:
23 - sudo apt-get remove git
23 - sudo apt-get remove git
24 - sudo add-apt-repository ppa:pdoes/ppa -y
24 - sudo add-apt-repository ppa:pdoes/ppa -y
25 - sudo apt-get update -y
25 - sudo apt-get update -y
26 - sudo apt-get install git -y
26 - sudo apt-get install git -y
27
27
28 install:
28 install:
29 - pip install mysql-python psycopg2 mock unittest2
29 - pip install mysql-python psycopg2 mock unittest2
30 - pip install . --use-mirrors
30 - pip install . --use-mirrors
31
31
32 # command to run tests
32 # command to run tests
33 script: nosetests
33 script: nosetests
34
34
35 notifications:
35 notifications:
36 email:
36 email:
37 - marcinkuz@gmail.com
37 - marcinkuz@gmail.com
38 irc: "irc.freenode.org#kallithea"
38 irc: "irc.freenode.org#kallithea"
39
39
40 branches:
40 branches:
41 only:
41 only:
42 - master
42 - master
@@ -1,51 +1,51 b''
1 .. _contributing:
1 .. _contributing:
2
2
3 =========================
3 =========================
4 Contributing to Kallithea
4 Contributing to Kallithea
5 =========================
5 =========================
6
6
7 If you would like to contribute to Kallithea, please contact us, any help is
7 If you would like to contribute to Kallithea, please contact us, any help is
8 greatly appreciated!
8 greatly appreciated!
9
9
10 Could I request that you make your source contributions by first forking the
10 Could I request that you make your source contributions by first forking the
11 Kallithea repository on bitbucket_
11 Kallithea repository on bitbucket_
12 https://bitbucket.org/conservancy/kallithea and then make your changes to
12 https://bitbucket.org/conservancy/kallithea and then make your changes to
13 your forked repository. Please post all fixes into **dev** bookmark since your
13 your forked repository. Please post all fixes into **dev** bookmark since your
14 change might be already fixed there and i try to merge all fixes from dev into
14 change might be already fixed there and i try to merge all fixes from dev into
15 stable, and not the other way. Finally, when you are finished with your changes,
15 stable, and not the other way. Finally, when you are finished with your changes,
16 please send us a pull request.
16 please send us a pull request.
17
17
18 To run Kallithea in a development version you always need to install the latest
18 To run Kallithea in a development version you always need to install the latest
19 required libs. Simply clone Kallithea and switch to beta branch::
19 required libs. Simply clone Kallithea and switch to beta branch::
20
20
21 hg clone https://kallithea-scm.org/repos/kallithea
21 hg clone https://kallithea-scm.org/repos/kallithea
22
22
23 after downloading/pulling Kallithea make sure you run::
23 after downloading/pulling Kallithea make sure you run::
24
24
25 python setup.py develop
25 python setup.py develop
26
26
27 command to install/verify all required packages, and prepare development
27 command to install/verify all required packages, and prepare development
28 enviroment.
28 enviroment.
29
29
30 There are two files in the directory production.ini and developement.ini copy
30 There are two files in the directory production.ini and developement.ini copy
31 the `development.ini` file as rc.ini (which is excluded from version controll)
31 the `development.ini` file as rc.ini (which is excluded from version controll)
32 and put all your changes like db connection or server port in there.
32 and put all your changes like db connection or server port in there.
33
33
34 After finishing your changes make sure all tests passes ok. You can run
34 After finishing your changes make sure all tests passes ok. You can run
35 the testsuite running ``nosetest`` from the project root, or if you use tox
35 the testsuite running ``nosetest`` from the project root, or if you use tox
36 run tox for python2.5-2.7 with multiple database test. When using `nosetests`
36 run tox for python2.5-2.7 with multiple database test. When using `nosetests`
37 test.ini file is used and by default it uses sqlite for tests, edit this file
37 test.ini file is used and by default it uses sqlite for tests, edit this file
38 to change your testing enviroment.
38 to change your testing enviroment.
39
39
40
40
41 There's a special set of tests for push/pull operations, you can runn them using::
41 There's a special set of tests for push/pull operations, you can runn them using::
42
42
43 paster serve test.ini --pid-file=test.pid --daemon
43 paster serve test.ini --pid-file=test.pid --daemon
44 RC_WHOOSH_TEST_DISABLE=1 RC_NO_TMP_PATH=1 nosetests -x kallithea/tests/other/test_vcs_operations.py
44 KALLITHEA_WHOOSH_TEST_DISABLE=1 KALLITHEA_NO_TMP_PATH=1 nosetests -x kallithea/tests/other/test_vcs_operations.py
45 kill -9 $(cat test.pid)
45 kill -9 $(cat test.pid)
46
46
47
47
48 | Thank you for any contributions!
48 | Thank you for any contributions!
49
49
50
50
51 .. _bitbucket: http://bitbucket.org/
51 .. _bitbucket: http://bitbucket.org/
@@ -1,141 +1,141 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 """
14 """
15 Pylons environment configuration
15 Pylons environment configuration
16 """
16 """
17
17
18 import os
18 import os
19 import logging
19 import logging
20 import kallithea
20 import kallithea
21 import platform
21 import platform
22
22
23 from mako.lookup import TemplateLookup
23 from mako.lookup import TemplateLookup
24 from pylons.configuration import PylonsConfig
24 from pylons.configuration import PylonsConfig
25 from pylons.error import handle_mako_error
25 from pylons.error import handle_mako_error
26
26
27 # don't remove this import it does magic for celery
27 # don't remove this import it does magic for celery
28 from kallithea.lib import celerypylons
28 from kallithea.lib import celerypylons
29
29
30 import kallithea.lib.app_globals as app_globals
30 import kallithea.lib.app_globals as app_globals
31
31
32 from kallithea.config.routing import make_map
32 from kallithea.config.routing import make_map
33
33
34 from kallithea.lib import helpers
34 from kallithea.lib import helpers
35 from kallithea.lib.auth import set_available_permissions
35 from kallithea.lib.auth import set_available_permissions
36 from kallithea.lib.utils import repo2db_mapper, make_ui, set_app_settings,\
36 from kallithea.lib.utils import repo2db_mapper, make_ui, set_app_settings,\
37 load_rcextensions, check_git_version, set_vcs_config
37 load_rcextensions, check_git_version, set_vcs_config
38 from kallithea.lib.utils2 import engine_from_config, str2bool
38 from kallithea.lib.utils2 import engine_from_config, str2bool
39 from kallithea.lib.db_manage import DbManage
39 from kallithea.lib.db_manage import DbManage
40 from kallithea.model import init_model
40 from kallithea.model import init_model
41 from kallithea.model.scm import ScmModel
41 from kallithea.model.scm import ScmModel
42
42
43 log = logging.getLogger(__name__)
43 log = logging.getLogger(__name__)
44
44
45
45
46 def load_environment(global_conf, app_conf, initial=False,
46 def load_environment(global_conf, app_conf, initial=False,
47 test_env=None, test_index=None):
47 test_env=None, test_index=None):
48 """
48 """
49 Configure the Pylons environment via the ``pylons.config``
49 Configure the Pylons environment via the ``pylons.config``
50 object
50 object
51 """
51 """
52 config = PylonsConfig()
52 config = PylonsConfig()
53
53
54 # Pylons paths
54 # Pylons paths
55 root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
55 root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
56 paths = dict(
56 paths = dict(
57 root=root,
57 root=root,
58 controllers=os.path.join(root, 'controllers'),
58 controllers=os.path.join(root, 'controllers'),
59 static_files=os.path.join(root, 'public'),
59 static_files=os.path.join(root, 'public'),
60 templates=[os.path.join(root, 'templates')]
60 templates=[os.path.join(root, 'templates')]
61 )
61 )
62
62
63 # Initialize config with the basic options
63 # Initialize config with the basic options
64 config.init_app(global_conf, app_conf, package='kallithea', paths=paths)
64 config.init_app(global_conf, app_conf, package='kallithea', paths=paths)
65
65
66 # store some globals into rhodecode
66 # store some globals into rhodecode
67 kallithea.CELERY_ON = str2bool(config['app_conf'].get('use_celery'))
67 kallithea.CELERY_ON = str2bool(config['app_conf'].get('use_celery'))
68 kallithea.CELERY_EAGER = str2bool(config['app_conf'].get('celery.always.eager'))
68 kallithea.CELERY_EAGER = str2bool(config['app_conf'].get('celery.always.eager'))
69
69
70 config['routes.map'] = make_map(config)
70 config['routes.map'] = make_map(config)
71 config['pylons.app_globals'] = app_globals.Globals(config)
71 config['pylons.app_globals'] = app_globals.Globals(config)
72 config['pylons.h'] = helpers
72 config['pylons.h'] = helpers
73 kallithea.CONFIG = config
73 kallithea.CONFIG = config
74
74
75 load_rcextensions(root_path=config['here'])
75 load_rcextensions(root_path=config['here'])
76
76
77 # Setup cache object as early as possible
77 # Setup cache object as early as possible
78 import pylons
78 import pylons
79 pylons.cache._push_object(config['pylons.app_globals'].cache)
79 pylons.cache._push_object(config['pylons.app_globals'].cache)
80
80
81 # Create the Mako TemplateLookup, with the default auto-escaping
81 # Create the Mako TemplateLookup, with the default auto-escaping
82 config['pylons.app_globals'].mako_lookup = TemplateLookup(
82 config['pylons.app_globals'].mako_lookup = TemplateLookup(
83 directories=paths['templates'],
83 directories=paths['templates'],
84 error_handler=handle_mako_error,
84 error_handler=handle_mako_error,
85 module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
85 module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
86 input_encoding='utf-8', default_filters=['escape'],
86 input_encoding='utf-8', default_filters=['escape'],
87 imports=['from webhelpers.html import escape'])
87 imports=['from webhelpers.html import escape'])
88
88
89 # sets the c attribute access when don't existing attribute are accessed
89 # sets the c attribute access when don't existing attribute are accessed
90 config['pylons.strict_tmpl_context'] = True
90 config['pylons.strict_tmpl_context'] = True
91 test = os.path.split(config['__file__'])[-1] == 'test.ini'
91 test = os.path.split(config['__file__'])[-1] == 'test.ini'
92 if test:
92 if test:
93 if test_env is None:
93 if test_env is None:
94 test_env = not int(os.environ.get('RC_NO_TMP_PATH', 0))
94 test_env = not int(os.environ.get('KALLITHEA_NO_TMP_PATH', 0))
95 if test_index is None:
95 if test_index is None:
96 test_index = not int(os.environ.get('RC_WHOOSH_TEST_DISABLE', 0))
96 test_index = not int(os.environ.get('KALLITHEA_WHOOSH_TEST_DISABLE', 0))
97 if os.environ.get('TEST_DB'):
97 if os.environ.get('TEST_DB'):
98 # swap config if we pass enviroment variable
98 # swap config if we pass enviroment variable
99 config['sqlalchemy.db1.url'] = os.environ.get('TEST_DB')
99 config['sqlalchemy.db1.url'] = os.environ.get('TEST_DB')
100
100
101 from kallithea.lib.utils import create_test_env, create_test_index
101 from kallithea.lib.utils import create_test_env, create_test_index
102 from kallithea.tests import TESTS_TMP_PATH
102 from kallithea.tests import TESTS_TMP_PATH
103 #set RC_NO_TMP_PATH=1 to disable re-creating the database and
103 #set KALLITHEA_NO_TMP_PATH=1 to disable re-creating the database and
104 #test repos
104 #test repos
105 if test_env:
105 if test_env:
106 create_test_env(TESTS_TMP_PATH, config)
106 create_test_env(TESTS_TMP_PATH, config)
107 #set RC_WHOOSH_TEST_DISABLE=1 to disable whoosh index during tests
107 #set KALLITHEA_WHOOSH_TEST_DISABLE=1 to disable whoosh index during tests
108 if test_index:
108 if test_index:
109 create_test_index(TESTS_TMP_PATH, config, True)
109 create_test_index(TESTS_TMP_PATH, config, True)
110
110
111 DbManage.check_waitress()
111 DbManage.check_waitress()
112 # MULTIPLE DB configs
112 # MULTIPLE DB configs
113 # Setup the SQLAlchemy database engine
113 # Setup the SQLAlchemy database engine
114 sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
114 sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
115 init_model(sa_engine_db1)
115 init_model(sa_engine_db1)
116
116
117 set_available_permissions(config)
117 set_available_permissions(config)
118 repos_path = make_ui('db').configitems('paths')[0][1]
118 repos_path = make_ui('db').configitems('paths')[0][1]
119 config['base_path'] = repos_path
119 config['base_path'] = repos_path
120 set_app_settings(config)
120 set_app_settings(config)
121
121
122 instance_id = kallithea.CONFIG.get('instance_id')
122 instance_id = kallithea.CONFIG.get('instance_id')
123 if instance_id == '*':
123 if instance_id == '*':
124 instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
124 instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
125 kallithea.CONFIG['instance_id'] = instance_id
125 kallithea.CONFIG['instance_id'] = instance_id
126
126
127 # CONFIGURATION OPTIONS HERE (note: all config options will override
127 # CONFIGURATION OPTIONS HERE (note: all config options will override
128 # any Pylons config options)
128 # any Pylons config options)
129
129
130 # store config reference into our module to skip import magic of
130 # store config reference into our module to skip import magic of
131 # pylons
131 # pylons
132 kallithea.CONFIG.update(config)
132 kallithea.CONFIG.update(config)
133 set_vcs_config(kallithea.CONFIG)
133 set_vcs_config(kallithea.CONFIG)
134
134
135 #check git version
135 #check git version
136 check_git_version()
136 check_git_version()
137
137
138 if str2bool(config.get('initial_repo_scan', True)):
138 if str2bool(config.get('initial_repo_scan', True)):
139 repo2db_mapper(ScmModel().repo_scan(repos_path),
139 repo2db_mapper(ScmModel().repo_scan(repos_path),
140 remove_obsolete=False, install_git_hook=False)
140 remove_obsolete=False, install_git_hook=False)
141 return config
141 return config
@@ -1,217 +1,217 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14
14
15 """
15 """
16 Pylons application test package
16 Pylons application test package
17
17
18 This package assumes the Pylons environment is already loaded, such as
18 This package assumes the Pylons environment is already loaded, such as
19 when this script is imported from the `nosetests --with-pylons=test.ini`
19 when this script is imported from the `nosetests --with-pylons=test.ini`
20 command.
20 command.
21
21
22 This module initializes the application via ``websetup`` (`paster
22 This module initializes the application via ``websetup`` (`paster
23 setup-app`) and provides the base testing objects.
23 setup-app`) and provides the base testing objects.
24
24
25 nosetests -x - fail on first error
25 nosetests -x - fail on first error
26 nosetests kallithea.tests.functional.test_admin_settings:TestSettingsController.test_my_account
26 nosetests kallithea.tests.functional.test_admin_settings:TestSettingsController.test_my_account
27 nosetests --pdb --pdb-failures
27 nosetests --pdb --pdb-failures
28 nosetests --with-coverage --cover-package=kallithea.model.validators kallithea.tests.test_validators
28 nosetests --with-coverage --cover-package=kallithea.model.validators kallithea.tests.test_validators
29
29
30 optional FLAGS:
30 optional FLAGS:
31 RC_WHOOSH_TEST_DISABLE=1 - skip whoosh index building and tests
31 KALLITHEA_WHOOSH_TEST_DISABLE=1 - skip whoosh index building and tests
32 RC_NO_TMP_PATH=1 - disable new temp path for tests, used mostly for test_vcs_operations
32 KALLITHEA_NO_TMP_PATH=1 - disable new temp path for tests, used mostly for test_vcs_operations
33
33
34 """
34 """
35 import os
35 import os
36 import time
36 import time
37 import logging
37 import logging
38 import datetime
38 import datetime
39 import hashlib
39 import hashlib
40 import tempfile
40 import tempfile
41 from os.path import join as jn
41 from os.path import join as jn
42
42
43 from tempfile import _RandomNameSequence
43 from tempfile import _RandomNameSequence
44
44
45 from paste.deploy import loadapp
45 from paste.deploy import loadapp
46 from paste.script.appinstall import SetupCommand
46 from paste.script.appinstall import SetupCommand
47
47
48 import pylons
48 import pylons
49 import pylons.test
49 import pylons.test
50 from pylons import config, url
50 from pylons import config, url
51 from pylons.i18n.translation import _get_translator
51 from pylons.i18n.translation import _get_translator
52 from pylons.util import ContextObj
52 from pylons.util import ContextObj
53
53
54 from routes.util import URLGenerator
54 from routes.util import URLGenerator
55 from webtest import TestApp
55 from webtest import TestApp
56 from nose.plugins.skip import SkipTest
56 from nose.plugins.skip import SkipTest
57
57
58 from kallithea.lib.compat import unittest
58 from kallithea.lib.compat import unittest
59 from kallithea import is_windows
59 from kallithea import is_windows
60 from kallithea.model.meta import Session
60 from kallithea.model.meta import Session
61 from kallithea.model.db import User
61 from kallithea.model.db import User
62 from kallithea.tests.nose_parametrized import parameterized
62 from kallithea.tests.nose_parametrized import parameterized
63 from kallithea.lib.utils2 import safe_unicode, safe_str
63 from kallithea.lib.utils2 import safe_unicode, safe_str
64
64
65
65
66 os.environ['TZ'] = 'UTC'
66 os.environ['TZ'] = 'UTC'
67 if not is_windows:
67 if not is_windows:
68 time.tzset()
68 time.tzset()
69
69
70 log = logging.getLogger(__name__)
70 log = logging.getLogger(__name__)
71
71
72 __all__ = [
72 __all__ = [
73 'parameterized', 'environ', 'url', 'get_new_dir', 'TestController',
73 'parameterized', 'environ', 'url', 'get_new_dir', 'TestController',
74 'SkipTest', 'ldap_lib_installed', 'BaseTestCase', 'init_stack',
74 'SkipTest', 'ldap_lib_installed', 'BaseTestCase', 'init_stack',
75 'TESTS_TMP_PATH', 'HG_REPO', 'GIT_REPO', 'NEW_HG_REPO', 'NEW_GIT_REPO',
75 'TESTS_TMP_PATH', 'HG_REPO', 'GIT_REPO', 'NEW_HG_REPO', 'NEW_GIT_REPO',
76 'HG_FORK', 'GIT_FORK', 'TEST_USER_ADMIN_LOGIN', 'TEST_USER_ADMIN_PASS',
76 'HG_FORK', 'GIT_FORK', 'TEST_USER_ADMIN_LOGIN', 'TEST_USER_ADMIN_PASS',
77 'TEST_USER_REGULAR_LOGIN', 'TEST_USER_REGULAR_PASS',
77 'TEST_USER_REGULAR_LOGIN', 'TEST_USER_REGULAR_PASS',
78 'TEST_USER_REGULAR_EMAIL', 'TEST_USER_REGULAR2_LOGIN',
78 'TEST_USER_REGULAR_EMAIL', 'TEST_USER_REGULAR2_LOGIN',
79 'TEST_USER_REGULAR2_PASS', 'TEST_USER_REGULAR2_EMAIL', 'TEST_HG_REPO',
79 'TEST_USER_REGULAR2_PASS', 'TEST_USER_REGULAR2_EMAIL', 'TEST_HG_REPO',
80 'TEST_HG_REPO_CLONE', 'TEST_HG_REPO_PULL', 'TEST_GIT_REPO',
80 'TEST_HG_REPO_CLONE', 'TEST_HG_REPO_PULL', 'TEST_GIT_REPO',
81 'TEST_GIT_REPO_CLONE', 'TEST_GIT_REPO_PULL', 'HG_REMOTE_REPO',
81 'TEST_GIT_REPO_CLONE', 'TEST_GIT_REPO_PULL', 'HG_REMOTE_REPO',
82 'GIT_REMOTE_REPO', 'SCM_TESTS',
82 'GIT_REMOTE_REPO', 'SCM_TESTS',
83 ]
83 ]
84
84
85 # Invoke websetup with the current config file
85 # Invoke websetup with the current config file
86 # SetupCommand('setup-app').run([config_file])
86 # SetupCommand('setup-app').run([config_file])
87
87
88 environ = {}
88 environ = {}
89
89
90 #SOME GLOBALS FOR TESTS
90 #SOME GLOBALS FOR TESTS
91
91
92 TESTS_TMP_PATH = jn('/', 'tmp', 'rc_test_%s' % _RandomNameSequence().next())
92 TESTS_TMP_PATH = jn('/', 'tmp', 'rc_test_%s' % _RandomNameSequence().next())
93 TEST_USER_ADMIN_LOGIN = 'test_admin'
93 TEST_USER_ADMIN_LOGIN = 'test_admin'
94 TEST_USER_ADMIN_PASS = 'test12'
94 TEST_USER_ADMIN_PASS = 'test12'
95 TEST_USER_ADMIN_EMAIL = 'test_admin@mail.com'
95 TEST_USER_ADMIN_EMAIL = 'test_admin@mail.com'
96
96
97 TEST_USER_REGULAR_LOGIN = 'test_regular'
97 TEST_USER_REGULAR_LOGIN = 'test_regular'
98 TEST_USER_REGULAR_PASS = 'test12'
98 TEST_USER_REGULAR_PASS = 'test12'
99 TEST_USER_REGULAR_EMAIL = 'test_regular@mail.com'
99 TEST_USER_REGULAR_EMAIL = 'test_regular@mail.com'
100
100
101 TEST_USER_REGULAR2_LOGIN = 'test_regular2'
101 TEST_USER_REGULAR2_LOGIN = 'test_regular2'
102 TEST_USER_REGULAR2_PASS = 'test12'
102 TEST_USER_REGULAR2_PASS = 'test12'
103 TEST_USER_REGULAR2_EMAIL = 'test_regular2@mail.com'
103 TEST_USER_REGULAR2_EMAIL = 'test_regular2@mail.com'
104
104
105 HG_REPO = 'vcs_test_hg'
105 HG_REPO = 'vcs_test_hg'
106 GIT_REPO = 'vcs_test_git'
106 GIT_REPO = 'vcs_test_git'
107
107
108 NEW_HG_REPO = 'vcs_test_hg_new'
108 NEW_HG_REPO = 'vcs_test_hg_new'
109 NEW_GIT_REPO = 'vcs_test_git_new'
109 NEW_GIT_REPO = 'vcs_test_git_new'
110
110
111 HG_FORK = 'vcs_test_hg_fork'
111 HG_FORK = 'vcs_test_hg_fork'
112 GIT_FORK = 'vcs_test_git_fork'
112 GIT_FORK = 'vcs_test_git_fork'
113
113
114 ## VCS
114 ## VCS
115 SCM_TESTS = ['hg', 'git']
115 SCM_TESTS = ['hg', 'git']
116 uniq_suffix = str(int(time.mktime(datetime.datetime.now().timetuple())))
116 uniq_suffix = str(int(time.mktime(datetime.datetime.now().timetuple())))
117
117
118 GIT_REMOTE_REPO = 'git://github.com/codeinn/vcs.git'
118 GIT_REMOTE_REPO = 'git://github.com/codeinn/vcs.git'
119
119
120 TEST_GIT_REPO = jn(TESTS_TMP_PATH, GIT_REPO)
120 TEST_GIT_REPO = jn(TESTS_TMP_PATH, GIT_REPO)
121 TEST_GIT_REPO_CLONE = jn(TESTS_TMP_PATH, 'vcsgitclone%s' % uniq_suffix)
121 TEST_GIT_REPO_CLONE = jn(TESTS_TMP_PATH, 'vcsgitclone%s' % uniq_suffix)
122 TEST_GIT_REPO_PULL = jn(TESTS_TMP_PATH, 'vcsgitpull%s' % uniq_suffix)
122 TEST_GIT_REPO_PULL = jn(TESTS_TMP_PATH, 'vcsgitpull%s' % uniq_suffix)
123
123
124
124
125 HG_REMOTE_REPO = 'http://bitbucket.org/marcinkuzminski/vcs'
125 HG_REMOTE_REPO = 'http://bitbucket.org/marcinkuzminski/vcs'
126
126
127 TEST_HG_REPO = jn(TESTS_TMP_PATH, HG_REPO)
127 TEST_HG_REPO = jn(TESTS_TMP_PATH, HG_REPO)
128 TEST_HG_REPO_CLONE = jn(TESTS_TMP_PATH, 'vcshgclone%s' % uniq_suffix)
128 TEST_HG_REPO_CLONE = jn(TESTS_TMP_PATH, 'vcshgclone%s' % uniq_suffix)
129 TEST_HG_REPO_PULL = jn(TESTS_TMP_PATH, 'vcshgpull%s' % uniq_suffix)
129 TEST_HG_REPO_PULL = jn(TESTS_TMP_PATH, 'vcshgpull%s' % uniq_suffix)
130
130
131 TEST_DIR = tempfile.gettempdir()
131 TEST_DIR = tempfile.gettempdir()
132 TEST_REPO_PREFIX = 'vcs-test'
132 TEST_REPO_PREFIX = 'vcs-test'
133
133
134 # cached repos if any !
134 # cached repos if any !
135 # comment out to get some other repos from bb or github
135 # comment out to get some other repos from bb or github
136 GIT_REMOTE_REPO = jn(TESTS_TMP_PATH, GIT_REPO)
136 GIT_REMOTE_REPO = jn(TESTS_TMP_PATH, GIT_REPO)
137 HG_REMOTE_REPO = jn(TESTS_TMP_PATH, HG_REPO)
137 HG_REMOTE_REPO = jn(TESTS_TMP_PATH, HG_REPO)
138
138
139 #skip ldap tests if LDAP lib is not installed
139 #skip ldap tests if LDAP lib is not installed
140 ldap_lib_installed = False
140 ldap_lib_installed = False
141 try:
141 try:
142 import ldap
142 import ldap
143 ldap_lib_installed = True
143 ldap_lib_installed = True
144 except ImportError:
144 except ImportError:
145 # means that python-ldap is not installed
145 # means that python-ldap is not installed
146 pass
146 pass
147
147
148
148
149 def get_new_dir(title):
149 def get_new_dir(title):
150 """
150 """
151 Returns always new directory path.
151 Returns always new directory path.
152 """
152 """
153 from kallithea.tests.vcs.utils import get_normalized_path
153 from kallithea.tests.vcs.utils import get_normalized_path
154 name = TEST_REPO_PREFIX
154 name = TEST_REPO_PREFIX
155 if title:
155 if title:
156 name = '-'.join((name, title))
156 name = '-'.join((name, title))
157 hex = hashlib.sha1(str(time.time())).hexdigest()
157 hex = hashlib.sha1(str(time.time())).hexdigest()
158 name = '-'.join((name, hex))
158 name = '-'.join((name, hex))
159 path = os.path.join(TEST_DIR, name)
159 path = os.path.join(TEST_DIR, name)
160 return get_normalized_path(path)
160 return get_normalized_path(path)
161
161
162
162
163 def init_stack(config=None):
163 def init_stack(config=None):
164 if not config:
164 if not config:
165 config = pylons.test.pylonsapp.config
165 config = pylons.test.pylonsapp.config
166 url._push_object(URLGenerator(config['routes.map'], environ))
166 url._push_object(URLGenerator(config['routes.map'], environ))
167 pylons.app_globals._push_object(config['pylons.app_globals'])
167 pylons.app_globals._push_object(config['pylons.app_globals'])
168 pylons.config._push_object(config)
168 pylons.config._push_object(config)
169 pylons.tmpl_context._push_object(ContextObj())
169 pylons.tmpl_context._push_object(ContextObj())
170 # Initialize a translator for tests that utilize i18n
170 # Initialize a translator for tests that utilize i18n
171 translator = _get_translator(pylons.config.get('lang'))
171 translator = _get_translator(pylons.config.get('lang'))
172 pylons.translator._push_object(translator)
172 pylons.translator._push_object(translator)
173
173
174
174
175 class BaseTestCase(unittest.TestCase):
175 class BaseTestCase(unittest.TestCase):
176 def __init__(self, *args, **kwargs):
176 def __init__(self, *args, **kwargs):
177 self.wsgiapp = pylons.test.pylonsapp
177 self.wsgiapp = pylons.test.pylonsapp
178 init_stack(self.wsgiapp.config)
178 init_stack(self.wsgiapp.config)
179 unittest.TestCase.__init__(self, *args, **kwargs)
179 unittest.TestCase.__init__(self, *args, **kwargs)
180
180
181
181
182 class TestController(BaseTestCase):
182 class TestController(BaseTestCase):
183
183
184 def __init__(self, *args, **kwargs):
184 def __init__(self, *args, **kwargs):
185 BaseTestCase.__init__(self, *args, **kwargs)
185 BaseTestCase.__init__(self, *args, **kwargs)
186 self.app = TestApp(self.wsgiapp)
186 self.app = TestApp(self.wsgiapp)
187 self.maxDiff = None
187 self.maxDiff = None
188 self.index_location = config['app_conf']['index_dir']
188 self.index_location = config['app_conf']['index_dir']
189
189
190 def log_user(self, username=TEST_USER_ADMIN_LOGIN,
190 def log_user(self, username=TEST_USER_ADMIN_LOGIN,
191 password=TEST_USER_ADMIN_PASS):
191 password=TEST_USER_ADMIN_PASS):
192 self._logged_username = username
192 self._logged_username = username
193 response = self.app.post(url(controller='login', action='index'),
193 response = self.app.post(url(controller='login', action='index'),
194 {'username': username,
194 {'username': username,
195 'password': password})
195 'password': password})
196
196
197 if 'invalid user name' in response.body:
197 if 'invalid user name' in response.body:
198 self.fail('could not login using %s %s' % (username, password))
198 self.fail('could not login using %s %s' % (username, password))
199
199
200 self.assertEqual(response.status, '302 Found')
200 self.assertEqual(response.status, '302 Found')
201 ses = response.session['authuser']
201 ses = response.session['authuser']
202 self.assertEqual(ses.get('username'), username)
202 self.assertEqual(ses.get('username'), username)
203 response = response.follow()
203 response = response.follow()
204 self.assertEqual(ses.get('is_authenticated'), True)
204 self.assertEqual(ses.get('is_authenticated'), True)
205
205
206 return response.session['authuser']
206 return response.session['authuser']
207
207
208 def _get_logged_user(self):
208 def _get_logged_user(self):
209 return User.get_by_username(self._logged_username)
209 return User.get_by_username(self._logged_username)
210
210
211 def checkSessionFlash(self, response, msg):
211 def checkSessionFlash(self, response, msg):
212 self.assertTrue('flash' in response.session,
212 self.assertTrue('flash' in response.session,
213 msg='Response session have no flash key' % response.session)
213 msg='Response session have no flash key' % response.session)
214 if not msg in response.session['flash'][0][1]:
214 if not msg in response.session['flash'][0][1]:
215 msg = u'msg `%s` not found in session flash: got `%s` instead' % (
215 msg = u'msg `%s` not found in session flash: got `%s` instead' % (
216 msg, response.session['flash'][0][1])
216 msg, response.session['flash'][0][1])
217 self.fail(safe_str(msg))
217 self.fail(safe_str(msg))
@@ -1,2295 +1,2295 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14
14
15 """
15 """
16 tests for api. run with::
16 tests for api. run with::
17
17
18 RC_WHOOSH_TEST_DISABLE=1 nosetests --with-coverage --cover-package=kallithea.controllers.api.api -x kallithea/tests/api
18 KALLITHEA_WHOOSH_TEST_DISABLE=1 nosetests --with-coverage --cover-package=kallithea.controllers.api.api -x kallithea/tests/api
19 """
19 """
20
20
21 from __future__ import with_statement
21 from __future__ import with_statement
22 import os
22 import os
23 import random
23 import random
24 import mock
24 import mock
25
25
26 from kallithea.tests import *
26 from kallithea.tests import *
27 from kallithea.tests.fixture import Fixture
27 from kallithea.tests.fixture import Fixture
28 from kallithea.lib.compat import json
28 from kallithea.lib.compat import json
29 from kallithea.lib.auth import AuthUser
29 from kallithea.lib.auth import AuthUser
30 from kallithea.model.user import UserModel
30 from kallithea.model.user import UserModel
31 from kallithea.model.user_group import UserGroupModel
31 from kallithea.model.user_group import UserGroupModel
32 from kallithea.model.repo import RepoModel
32 from kallithea.model.repo import RepoModel
33 from kallithea.model.repo_group import RepoGroupModel
33 from kallithea.model.repo_group import RepoGroupModel
34 from kallithea.model.meta import Session
34 from kallithea.model.meta import Session
35 from kallithea.model.scm import ScmModel
35 from kallithea.model.scm import ScmModel
36 from kallithea.model.gist import GistModel
36 from kallithea.model.gist import GistModel
37 from kallithea.model.db import Repository, User, Setting
37 from kallithea.model.db import Repository, User, Setting
38 from kallithea.lib.utils2 import time_to_datetime
38 from kallithea.lib.utils2 import time_to_datetime
39
39
40
40
41 API_URL = '/_admin/api'
41 API_URL = '/_admin/api'
42 TEST_USER_GROUP = 'test_user_group'
42 TEST_USER_GROUP = 'test_user_group'
43 TEST_REPO_GROUP = 'test_repo_group'
43 TEST_REPO_GROUP = 'test_repo_group'
44
44
45 fixture = Fixture()
45 fixture = Fixture()
46
46
47
47
48 def _build_data(apikey, method, **kw):
48 def _build_data(apikey, method, **kw):
49 """
49 """
50 Builds API data with given random ID
50 Builds API data with given random ID
51
51
52 :param random_id:
52 :param random_id:
53 """
53 """
54 random_id = random.randrange(1, 9999)
54 random_id = random.randrange(1, 9999)
55 return random_id, json.dumps({
55 return random_id, json.dumps({
56 "id": random_id,
56 "id": random_id,
57 "api_key": apikey,
57 "api_key": apikey,
58 "method": method,
58 "method": method,
59 "args": kw
59 "args": kw
60 })
60 })
61
61
62
62
63 jsonify = lambda obj: json.loads(json.dumps(obj))
63 jsonify = lambda obj: json.loads(json.dumps(obj))
64
64
65
65
66 def crash(*args, **kwargs):
66 def crash(*args, **kwargs):
67 raise Exception('Total Crash !')
67 raise Exception('Total Crash !')
68
68
69
69
70 def api_call(test_obj, params):
70 def api_call(test_obj, params):
71 response = test_obj.app.post(API_URL, content_type='application/json',
71 response = test_obj.app.post(API_URL, content_type='application/json',
72 params=params)
72 params=params)
73 return response
73 return response
74
74
75
75
76 ## helpers
76 ## helpers
77 def make_user_group(name=TEST_USER_GROUP):
77 def make_user_group(name=TEST_USER_GROUP):
78 gr = fixture.create_user_group(name, cur_user=TEST_USER_ADMIN_LOGIN)
78 gr = fixture.create_user_group(name, cur_user=TEST_USER_ADMIN_LOGIN)
79 UserGroupModel().add_user_to_group(user_group=gr,
79 UserGroupModel().add_user_to_group(user_group=gr,
80 user=TEST_USER_ADMIN_LOGIN)
80 user=TEST_USER_ADMIN_LOGIN)
81 Session().commit()
81 Session().commit()
82 return gr
82 return gr
83
83
84
84
85 def make_repo_group(name=TEST_REPO_GROUP):
85 def make_repo_group(name=TEST_REPO_GROUP):
86 gr = fixture.create_repo_group(name, cur_user=TEST_USER_ADMIN_LOGIN)
86 gr = fixture.create_repo_group(name, cur_user=TEST_USER_ADMIN_LOGIN)
87 Session().commit()
87 Session().commit()
88 return gr
88 return gr
89
89
90
90
91 class BaseTestApi(object):
91 class BaseTestApi(object):
92 REPO = None
92 REPO = None
93 REPO_TYPE = None
93 REPO_TYPE = None
94
94
95 @classmethod
95 @classmethod
96 def setup_class(cls):
96 def setup_class(cls):
97 cls.usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
97 cls.usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
98 cls.apikey = cls.usr.api_key
98 cls.apikey = cls.usr.api_key
99 cls.test_user = UserModel().create_or_update(
99 cls.test_user = UserModel().create_or_update(
100 username='test-api',
100 username='test-api',
101 password='test',
101 password='test',
102 email='test@example.com',
102 email='test@example.com',
103 firstname='first',
103 firstname='first',
104 lastname='last'
104 lastname='last'
105 )
105 )
106 Session().commit()
106 Session().commit()
107 cls.TEST_USER_LOGIN = cls.test_user.username
107 cls.TEST_USER_LOGIN = cls.test_user.username
108 cls.apikey_regular = cls.test_user.api_key
108 cls.apikey_regular = cls.test_user.api_key
109
109
110 @classmethod
110 @classmethod
111 def teardown_class(cls):
111 def teardown_class(cls):
112 pass
112 pass
113
113
114 def setUp(self):
114 def setUp(self):
115 self.maxDiff = None
115 self.maxDiff = None
116 make_user_group()
116 make_user_group()
117 make_repo_group()
117 make_repo_group()
118
118
119 def tearDown(self):
119 def tearDown(self):
120 fixture.destroy_user_group(TEST_USER_GROUP)
120 fixture.destroy_user_group(TEST_USER_GROUP)
121 fixture.destroy_gists()
121 fixture.destroy_gists()
122 fixture.destroy_repo_group(TEST_REPO_GROUP)
122 fixture.destroy_repo_group(TEST_REPO_GROUP)
123
123
124 def _compare_ok(self, id_, expected, given):
124 def _compare_ok(self, id_, expected, given):
125 expected = jsonify({
125 expected = jsonify({
126 'id': id_,
126 'id': id_,
127 'error': None,
127 'error': None,
128 'result': expected
128 'result': expected
129 })
129 })
130 given = json.loads(given)
130 given = json.loads(given)
131 self.assertEqual(expected, given)
131 self.assertEqual(expected, given)
132
132
133 def _compare_error(self, id_, expected, given):
133 def _compare_error(self, id_, expected, given):
134 expected = jsonify({
134 expected = jsonify({
135 'id': id_,
135 'id': id_,
136 'error': expected,
136 'error': expected,
137 'result': None
137 'result': None
138 })
138 })
139 given = json.loads(given)
139 given = json.loads(given)
140 self.assertEqual(expected, given)
140 self.assertEqual(expected, given)
141
141
142 def test_Optional_object(self):
142 def test_Optional_object(self):
143 from kallithea.controllers.api.api import Optional
143 from kallithea.controllers.api.api import Optional
144
144
145 option1 = Optional(None)
145 option1 = Optional(None)
146 self.assertEqual('<Optional:%s>' % None, repr(option1))
146 self.assertEqual('<Optional:%s>' % None, repr(option1))
147 self.assertEqual(option1(), None)
147 self.assertEqual(option1(), None)
148
148
149 self.assertEqual(1, Optional.extract(Optional(1)))
149 self.assertEqual(1, Optional.extract(Optional(1)))
150 self.assertEqual('trololo', Optional.extract('trololo'))
150 self.assertEqual('trololo', Optional.extract('trololo'))
151
151
152 def test_Optional_OAttr(self):
152 def test_Optional_OAttr(self):
153 from kallithea.controllers.api.api import Optional, OAttr
153 from kallithea.controllers.api.api import Optional, OAttr
154
154
155 option1 = Optional(OAttr('apiuser'))
155 option1 = Optional(OAttr('apiuser'))
156 self.assertEqual('apiuser', Optional.extract(option1))
156 self.assertEqual('apiuser', Optional.extract(option1))
157
157
158 def test_OAttr_object(self):
158 def test_OAttr_object(self):
159 from kallithea.controllers.api.api import OAttr
159 from kallithea.controllers.api.api import OAttr
160
160
161 oattr1 = OAttr('apiuser')
161 oattr1 = OAttr('apiuser')
162 self.assertEqual('<OptionalAttr:apiuser>', repr(oattr1))
162 self.assertEqual('<OptionalAttr:apiuser>', repr(oattr1))
163 self.assertEqual(oattr1(), oattr1)
163 self.assertEqual(oattr1(), oattr1)
164
164
165 def test_api_wrong_key(self):
165 def test_api_wrong_key(self):
166 id_, params = _build_data('trololo', 'get_user')
166 id_, params = _build_data('trololo', 'get_user')
167 response = api_call(self, params)
167 response = api_call(self, params)
168
168
169 expected = 'Invalid API KEY'
169 expected = 'Invalid API KEY'
170 self._compare_error(id_, expected, given=response.body)
170 self._compare_error(id_, expected, given=response.body)
171
171
172 def test_api_missing_non_optional_param(self):
172 def test_api_missing_non_optional_param(self):
173 id_, params = _build_data(self.apikey, 'get_repo')
173 id_, params = _build_data(self.apikey, 'get_repo')
174 response = api_call(self, params)
174 response = api_call(self, params)
175
175
176 expected = 'Missing non optional `repoid` arg in JSON DATA'
176 expected = 'Missing non optional `repoid` arg in JSON DATA'
177 self._compare_error(id_, expected, given=response.body)
177 self._compare_error(id_, expected, given=response.body)
178
178
179 def test_api_missing_non_optional_param_args_null(self):
179 def test_api_missing_non_optional_param_args_null(self):
180 id_, params = _build_data(self.apikey, 'get_repo')
180 id_, params = _build_data(self.apikey, 'get_repo')
181 params = params.replace('"args": {}', '"args": null')
181 params = params.replace('"args": {}', '"args": null')
182 response = api_call(self, params)
182 response = api_call(self, params)
183
183
184 expected = 'Missing non optional `repoid` arg in JSON DATA'
184 expected = 'Missing non optional `repoid` arg in JSON DATA'
185 self._compare_error(id_, expected, given=response.body)
185 self._compare_error(id_, expected, given=response.body)
186
186
187 def test_api_missing_non_optional_param_args_bad(self):
187 def test_api_missing_non_optional_param_args_bad(self):
188 id_, params = _build_data(self.apikey, 'get_repo')
188 id_, params = _build_data(self.apikey, 'get_repo')
189 params = params.replace('"args": {}', '"args": 1')
189 params = params.replace('"args": {}', '"args": 1')
190 response = api_call(self, params)
190 response = api_call(self, params)
191
191
192 expected = 'Missing non optional `repoid` arg in JSON DATA'
192 expected = 'Missing non optional `repoid` arg in JSON DATA'
193 self._compare_error(id_, expected, given=response.body)
193 self._compare_error(id_, expected, given=response.body)
194
194
195 def test_api_args_is_null(self):
195 def test_api_args_is_null(self):
196 id_, params = _build_data(self.apikey, 'get_users', )
196 id_, params = _build_data(self.apikey, 'get_users', )
197 params = params.replace('"args": {}', '"args": null')
197 params = params.replace('"args": {}', '"args": null')
198 response = api_call(self, params)
198 response = api_call(self, params)
199 self.assertEqual(response.status, '200 OK')
199 self.assertEqual(response.status, '200 OK')
200
200
201 def test_api_args_is_bad(self):
201 def test_api_args_is_bad(self):
202 id_, params = _build_data(self.apikey, 'get_users', )
202 id_, params = _build_data(self.apikey, 'get_users', )
203 params = params.replace('"args": {}', '"args": 1')
203 params = params.replace('"args": {}', '"args": 1')
204 response = api_call(self, params)
204 response = api_call(self, params)
205 self.assertEqual(response.status, '200 OK')
205 self.assertEqual(response.status, '200 OK')
206
206
207 def test_api_args_different_args(self):
207 def test_api_args_different_args(self):
208 import string
208 import string
209 expected = {
209 expected = {
210 'ascii_letters': string.ascii_letters,
210 'ascii_letters': string.ascii_letters,
211 'ws': string.whitespace,
211 'ws': string.whitespace,
212 'printables': string.printable
212 'printables': string.printable
213 }
213 }
214 id_, params = _build_data(self.apikey, 'test', args=expected)
214 id_, params = _build_data(self.apikey, 'test', args=expected)
215 response = api_call(self, params)
215 response = api_call(self, params)
216 self.assertEqual(response.status, '200 OK')
216 self.assertEqual(response.status, '200 OK')
217 self._compare_ok(id_, expected, response.body)
217 self._compare_ok(id_, expected, response.body)
218
218
219 def test_api_get_users(self):
219 def test_api_get_users(self):
220 id_, params = _build_data(self.apikey, 'get_users', )
220 id_, params = _build_data(self.apikey, 'get_users', )
221 response = api_call(self, params)
221 response = api_call(self, params)
222 ret_all = []
222 ret_all = []
223 _users = User.query().filter(User.username != User.DEFAULT_USER) \
223 _users = User.query().filter(User.username != User.DEFAULT_USER) \
224 .order_by(User.username).all()
224 .order_by(User.username).all()
225 for usr in _users:
225 for usr in _users:
226 ret = usr.get_api_data()
226 ret = usr.get_api_data()
227 ret_all.append(jsonify(ret))
227 ret_all.append(jsonify(ret))
228 expected = ret_all
228 expected = ret_all
229 self._compare_ok(id_, expected, given=response.body)
229 self._compare_ok(id_, expected, given=response.body)
230
230
231 def test_api_get_user(self):
231 def test_api_get_user(self):
232 id_, params = _build_data(self.apikey, 'get_user',
232 id_, params = _build_data(self.apikey, 'get_user',
233 userid=TEST_USER_ADMIN_LOGIN)
233 userid=TEST_USER_ADMIN_LOGIN)
234 response = api_call(self, params)
234 response = api_call(self, params)
235
235
236 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
236 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
237 ret = usr.get_api_data()
237 ret = usr.get_api_data()
238 ret['permissions'] = AuthUser(usr.user_id).permissions
238 ret['permissions'] = AuthUser(usr.user_id).permissions
239
239
240 expected = ret
240 expected = ret
241 self._compare_ok(id_, expected, given=response.body)
241 self._compare_ok(id_, expected, given=response.body)
242
242
243 def test_api_get_user_that_does_not_exist(self):
243 def test_api_get_user_that_does_not_exist(self):
244 id_, params = _build_data(self.apikey, 'get_user',
244 id_, params = _build_data(self.apikey, 'get_user',
245 userid='trololo')
245 userid='trololo')
246 response = api_call(self, params)
246 response = api_call(self, params)
247
247
248 expected = "user `%s` does not exist" % 'trololo'
248 expected = "user `%s` does not exist" % 'trololo'
249 self._compare_error(id_, expected, given=response.body)
249 self._compare_error(id_, expected, given=response.body)
250
250
251 def test_api_get_user_without_giving_userid(self):
251 def test_api_get_user_without_giving_userid(self):
252 id_, params = _build_data(self.apikey, 'get_user')
252 id_, params = _build_data(self.apikey, 'get_user')
253 response = api_call(self, params)
253 response = api_call(self, params)
254
254
255 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
255 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
256 ret = usr.get_api_data()
256 ret = usr.get_api_data()
257 ret['permissions'] = AuthUser(usr.user_id).permissions
257 ret['permissions'] = AuthUser(usr.user_id).permissions
258
258
259 expected = ret
259 expected = ret
260 self._compare_ok(id_, expected, given=response.body)
260 self._compare_ok(id_, expected, given=response.body)
261
261
262 def test_api_get_user_without_giving_userid_non_admin(self):
262 def test_api_get_user_without_giving_userid_non_admin(self):
263 id_, params = _build_data(self.apikey_regular, 'get_user')
263 id_, params = _build_data(self.apikey_regular, 'get_user')
264 response = api_call(self, params)
264 response = api_call(self, params)
265
265
266 usr = UserModel().get_by_username(self.TEST_USER_LOGIN)
266 usr = UserModel().get_by_username(self.TEST_USER_LOGIN)
267 ret = usr.get_api_data()
267 ret = usr.get_api_data()
268 ret['permissions'] = AuthUser(usr.user_id).permissions
268 ret['permissions'] = AuthUser(usr.user_id).permissions
269
269
270 expected = ret
270 expected = ret
271 self._compare_ok(id_, expected, given=response.body)
271 self._compare_ok(id_, expected, given=response.body)
272
272
273 def test_api_get_user_with_giving_userid_non_admin(self):
273 def test_api_get_user_with_giving_userid_non_admin(self):
274 id_, params = _build_data(self.apikey_regular, 'get_user',
274 id_, params = _build_data(self.apikey_regular, 'get_user',
275 userid=self.TEST_USER_LOGIN)
275 userid=self.TEST_USER_LOGIN)
276 response = api_call(self, params)
276 response = api_call(self, params)
277
277
278 expected = 'userid is not the same as your user'
278 expected = 'userid is not the same as your user'
279 self._compare_error(id_, expected, given=response.body)
279 self._compare_error(id_, expected, given=response.body)
280
280
281 def test_api_pull(self):
281 def test_api_pull(self):
282 repo_name = 'test_pull'
282 repo_name = 'test_pull'
283 r = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
283 r = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
284 r.clone_uri = os.path.join(TESTS_TMP_PATH, self.REPO)
284 r.clone_uri = os.path.join(TESTS_TMP_PATH, self.REPO)
285 Session.add(r)
285 Session.add(r)
286 Session.commit()
286 Session.commit()
287
287
288 id_, params = _build_data(self.apikey, 'pull',
288 id_, params = _build_data(self.apikey, 'pull',
289 repoid=repo_name,)
289 repoid=repo_name,)
290 response = api_call(self, params)
290 response = api_call(self, params)
291
291
292 expected = {'msg': 'Pulled from `%s`' % repo_name,
292 expected = {'msg': 'Pulled from `%s`' % repo_name,
293 'repository': repo_name}
293 'repository': repo_name}
294 self._compare_ok(id_, expected, given=response.body)
294 self._compare_ok(id_, expected, given=response.body)
295
295
296 fixture.destroy_repo(repo_name)
296 fixture.destroy_repo(repo_name)
297
297
298 def test_api_pull_error(self):
298 def test_api_pull_error(self):
299 id_, params = _build_data(self.apikey, 'pull',
299 id_, params = _build_data(self.apikey, 'pull',
300 repoid=self.REPO, )
300 repoid=self.REPO, )
301 response = api_call(self, params)
301 response = api_call(self, params)
302
302
303 expected = 'Unable to pull changes from `%s`' % self.REPO
303 expected = 'Unable to pull changes from `%s`' % self.REPO
304 self._compare_error(id_, expected, given=response.body)
304 self._compare_error(id_, expected, given=response.body)
305
305
306 def test_api_rescan_repos(self):
306 def test_api_rescan_repos(self):
307 id_, params = _build_data(self.apikey, 'rescan_repos')
307 id_, params = _build_data(self.apikey, 'rescan_repos')
308 response = api_call(self, params)
308 response = api_call(self, params)
309
309
310 expected = {'added': [], 'removed': []}
310 expected = {'added': [], 'removed': []}
311 self._compare_ok(id_, expected, given=response.body)
311 self._compare_ok(id_, expected, given=response.body)
312
312
313 @mock.patch.object(ScmModel, 'repo_scan', crash)
313 @mock.patch.object(ScmModel, 'repo_scan', crash)
314 def test_api_rescann_error(self):
314 def test_api_rescann_error(self):
315 id_, params = _build_data(self.apikey, 'rescan_repos', )
315 id_, params = _build_data(self.apikey, 'rescan_repos', )
316 response = api_call(self, params)
316 response = api_call(self, params)
317
317
318 expected = 'Error occurred during rescan repositories action'
318 expected = 'Error occurred during rescan repositories action'
319 self._compare_error(id_, expected, given=response.body)
319 self._compare_error(id_, expected, given=response.body)
320
320
321 def test_api_invalidate_cache(self):
321 def test_api_invalidate_cache(self):
322 repo = RepoModel().get_by_repo_name(self.REPO)
322 repo = RepoModel().get_by_repo_name(self.REPO)
323 repo.scm_instance_cached() # seed cache
323 repo.scm_instance_cached() # seed cache
324
324
325 id_, params = _build_data(self.apikey, 'invalidate_cache',
325 id_, params = _build_data(self.apikey, 'invalidate_cache',
326 repoid=self.REPO)
326 repoid=self.REPO)
327 response = api_call(self, params)
327 response = api_call(self, params)
328
328
329 expected = {
329 expected = {
330 'msg': "Cache for repository `%s` was invalidated" % (self.REPO,),
330 'msg': "Cache for repository `%s` was invalidated" % (self.REPO,),
331 'repository': self.REPO
331 'repository': self.REPO
332 }
332 }
333 self._compare_ok(id_, expected, given=response.body)
333 self._compare_ok(id_, expected, given=response.body)
334
334
335 @mock.patch.object(ScmModel, 'mark_for_invalidation', crash)
335 @mock.patch.object(ScmModel, 'mark_for_invalidation', crash)
336 def test_api_invalidate_cache_error(self):
336 def test_api_invalidate_cache_error(self):
337 id_, params = _build_data(self.apikey, 'invalidate_cache',
337 id_, params = _build_data(self.apikey, 'invalidate_cache',
338 repoid=self.REPO)
338 repoid=self.REPO)
339 response = api_call(self, params)
339 response = api_call(self, params)
340
340
341 expected = 'Error occurred during cache invalidation action'
341 expected = 'Error occurred during cache invalidation action'
342 self._compare_error(id_, expected, given=response.body)
342 self._compare_error(id_, expected, given=response.body)
343
343
344 def test_api_invalidate_cache_regular_user_no_permission(self):
344 def test_api_invalidate_cache_regular_user_no_permission(self):
345 repo = RepoModel().get_by_repo_name(self.REPO)
345 repo = RepoModel().get_by_repo_name(self.REPO)
346 repo.scm_instance_cached() # seed cache
346 repo.scm_instance_cached() # seed cache
347
347
348 id_, params = _build_data(self.apikey_regular, 'invalidate_cache',
348 id_, params = _build_data(self.apikey_regular, 'invalidate_cache',
349 repoid=self.REPO)
349 repoid=self.REPO)
350 response = api_call(self, params)
350 response = api_call(self, params)
351
351
352 expected = "repository `%s` does not exist" % (self.REPO,)
352 expected = "repository `%s` does not exist" % (self.REPO,)
353 self._compare_error(id_, expected, given=response.body)
353 self._compare_error(id_, expected, given=response.body)
354
354
355 def test_api_lock_repo_lock_aquire(self):
355 def test_api_lock_repo_lock_aquire(self):
356 id_, params = _build_data(self.apikey, 'lock',
356 id_, params = _build_data(self.apikey, 'lock',
357 userid=TEST_USER_ADMIN_LOGIN,
357 userid=TEST_USER_ADMIN_LOGIN,
358 repoid=self.REPO,
358 repoid=self.REPO,
359 locked=True)
359 locked=True)
360 response = api_call(self, params)
360 response = api_call(self, params)
361 expected = {
361 expected = {
362 'repo': self.REPO, 'locked': True,
362 'repo': self.REPO, 'locked': True,
363 'locked_since': response.json['result']['locked_since'],
363 'locked_since': response.json['result']['locked_since'],
364 'locked_by': TEST_USER_ADMIN_LOGIN,
364 'locked_by': TEST_USER_ADMIN_LOGIN,
365 'lock_state_changed': True,
365 'lock_state_changed': True,
366 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
366 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
367 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
367 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
368 }
368 }
369 self._compare_ok(id_, expected, given=response.body)
369 self._compare_ok(id_, expected, given=response.body)
370
370
371 def test_api_lock_repo_lock_aquire_by_non_admin(self):
371 def test_api_lock_repo_lock_aquire_by_non_admin(self):
372 repo_name = 'api_delete_me'
372 repo_name = 'api_delete_me'
373 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
373 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
374 cur_user=self.TEST_USER_LOGIN)
374 cur_user=self.TEST_USER_LOGIN)
375 try:
375 try:
376 id_, params = _build_data(self.apikey_regular, 'lock',
376 id_, params = _build_data(self.apikey_regular, 'lock',
377 repoid=repo_name,
377 repoid=repo_name,
378 locked=True)
378 locked=True)
379 response = api_call(self, params)
379 response = api_call(self, params)
380 expected = {
380 expected = {
381 'repo': repo_name,
381 'repo': repo_name,
382 'locked': True,
382 'locked': True,
383 'locked_since': response.json['result']['locked_since'],
383 'locked_since': response.json['result']['locked_since'],
384 'locked_by': self.TEST_USER_LOGIN,
384 'locked_by': self.TEST_USER_LOGIN,
385 'lock_state_changed': True,
385 'lock_state_changed': True,
386 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
386 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
387 % (self.TEST_USER_LOGIN, repo_name, True))
387 % (self.TEST_USER_LOGIN, repo_name, True))
388 }
388 }
389 self._compare_ok(id_, expected, given=response.body)
389 self._compare_ok(id_, expected, given=response.body)
390 finally:
390 finally:
391 fixture.destroy_repo(repo_name)
391 fixture.destroy_repo(repo_name)
392
392
393 def test_api_lock_repo_lock_aquire_non_admin_with_userid(self):
393 def test_api_lock_repo_lock_aquire_non_admin_with_userid(self):
394 repo_name = 'api_delete_me'
394 repo_name = 'api_delete_me'
395 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
395 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
396 cur_user=self.TEST_USER_LOGIN)
396 cur_user=self.TEST_USER_LOGIN)
397 try:
397 try:
398 id_, params = _build_data(self.apikey_regular, 'lock',
398 id_, params = _build_data(self.apikey_regular, 'lock',
399 userid=TEST_USER_ADMIN_LOGIN,
399 userid=TEST_USER_ADMIN_LOGIN,
400 repoid=repo_name,
400 repoid=repo_name,
401 locked=True)
401 locked=True)
402 response = api_call(self, params)
402 response = api_call(self, params)
403 expected = 'userid is not the same as your user'
403 expected = 'userid is not the same as your user'
404 self._compare_error(id_, expected, given=response.body)
404 self._compare_error(id_, expected, given=response.body)
405 finally:
405 finally:
406 fixture.destroy_repo(repo_name)
406 fixture.destroy_repo(repo_name)
407
407
408 def test_api_lock_repo_lock_aquire_non_admin_not_his_repo(self):
408 def test_api_lock_repo_lock_aquire_non_admin_not_his_repo(self):
409 id_, params = _build_data(self.apikey_regular, 'lock',
409 id_, params = _build_data(self.apikey_regular, 'lock',
410 repoid=self.REPO,
410 repoid=self.REPO,
411 locked=True)
411 locked=True)
412 response = api_call(self, params)
412 response = api_call(self, params)
413 expected = 'repository `%s` does not exist' % (self.REPO)
413 expected = 'repository `%s` does not exist' % (self.REPO)
414 self._compare_error(id_, expected, given=response.body)
414 self._compare_error(id_, expected, given=response.body)
415
415
416 def test_api_lock_repo_lock_release(self):
416 def test_api_lock_repo_lock_release(self):
417 id_, params = _build_data(self.apikey, 'lock',
417 id_, params = _build_data(self.apikey, 'lock',
418 userid=TEST_USER_ADMIN_LOGIN,
418 userid=TEST_USER_ADMIN_LOGIN,
419 repoid=self.REPO,
419 repoid=self.REPO,
420 locked=False)
420 locked=False)
421 response = api_call(self, params)
421 response = api_call(self, params)
422 expected = {
422 expected = {
423 'repo': self.REPO,
423 'repo': self.REPO,
424 'locked': False,
424 'locked': False,
425 'locked_since': None,
425 'locked_since': None,
426 'locked_by': TEST_USER_ADMIN_LOGIN,
426 'locked_by': TEST_USER_ADMIN_LOGIN,
427 'lock_state_changed': True,
427 'lock_state_changed': True,
428 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
428 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
429 % (TEST_USER_ADMIN_LOGIN, self.REPO, False))
429 % (TEST_USER_ADMIN_LOGIN, self.REPO, False))
430 }
430 }
431 self._compare_ok(id_, expected, given=response.body)
431 self._compare_ok(id_, expected, given=response.body)
432
432
433 def test_api_lock_repo_lock_aquire_optional_userid(self):
433 def test_api_lock_repo_lock_aquire_optional_userid(self):
434 id_, params = _build_data(self.apikey, 'lock',
434 id_, params = _build_data(self.apikey, 'lock',
435 repoid=self.REPO,
435 repoid=self.REPO,
436 locked=True)
436 locked=True)
437 response = api_call(self, params)
437 response = api_call(self, params)
438 time_ = response.json['result']['locked_since']
438 time_ = response.json['result']['locked_since']
439 expected = {
439 expected = {
440 'repo': self.REPO,
440 'repo': self.REPO,
441 'locked': True,
441 'locked': True,
442 'locked_since': time_,
442 'locked_since': time_,
443 'locked_by': TEST_USER_ADMIN_LOGIN,
443 'locked_by': TEST_USER_ADMIN_LOGIN,
444 'lock_state_changed': True,
444 'lock_state_changed': True,
445 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
445 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
446 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
446 % (TEST_USER_ADMIN_LOGIN, self.REPO, True))
447 }
447 }
448
448
449 self._compare_ok(id_, expected, given=response.body)
449 self._compare_ok(id_, expected, given=response.body)
450
450
451 def test_api_lock_repo_lock_optional_locked(self):
451 def test_api_lock_repo_lock_optional_locked(self):
452 id_, params = _build_data(self.apikey, 'lock',
452 id_, params = _build_data(self.apikey, 'lock',
453 repoid=self.REPO)
453 repoid=self.REPO)
454 response = api_call(self, params)
454 response = api_call(self, params)
455 time_ = response.json['result']['locked_since']
455 time_ = response.json['result']['locked_since']
456 expected = {
456 expected = {
457 'repo': self.REPO,
457 'repo': self.REPO,
458 'locked': True,
458 'locked': True,
459 'locked_since': time_,
459 'locked_since': time_,
460 'locked_by': TEST_USER_ADMIN_LOGIN,
460 'locked_by': TEST_USER_ADMIN_LOGIN,
461 'lock_state_changed': False,
461 'lock_state_changed': False,
462 'msg': ('Repo `%s` locked by `%s` on `%s`.'
462 'msg': ('Repo `%s` locked by `%s` on `%s`.'
463 % (self.REPO, TEST_USER_ADMIN_LOGIN,
463 % (self.REPO, TEST_USER_ADMIN_LOGIN,
464 json.dumps(time_to_datetime(time_))))
464 json.dumps(time_to_datetime(time_))))
465 }
465 }
466 self._compare_ok(id_, expected, given=response.body)
466 self._compare_ok(id_, expected, given=response.body)
467
467
468 def test_api_lock_repo_lock_optional_not_locked(self):
468 def test_api_lock_repo_lock_optional_not_locked(self):
469 repo_name = 'api_not_locked'
469 repo_name = 'api_not_locked'
470 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
470 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
471 cur_user=self.TEST_USER_LOGIN)
471 cur_user=self.TEST_USER_LOGIN)
472 self.assertEqual(repo.locked, [None, None])
472 self.assertEqual(repo.locked, [None, None])
473 try:
473 try:
474 id_, params = _build_data(self.apikey, 'lock',
474 id_, params = _build_data(self.apikey, 'lock',
475 repoid=repo.repo_id)
475 repoid=repo.repo_id)
476 response = api_call(self, params)
476 response = api_call(self, params)
477 expected = {
477 expected = {
478 'repo': repo_name,
478 'repo': repo_name,
479 'locked': False,
479 'locked': False,
480 'locked_since': None,
480 'locked_since': None,
481 'locked_by': None,
481 'locked_by': None,
482 'lock_state_changed': False,
482 'lock_state_changed': False,
483 'msg': ('Repo `%s` not locked.' % (repo_name,))
483 'msg': ('Repo `%s` not locked.' % (repo_name,))
484 }
484 }
485 self._compare_ok(id_, expected, given=response.body)
485 self._compare_ok(id_, expected, given=response.body)
486 finally:
486 finally:
487 fixture.destroy_repo(repo_name)
487 fixture.destroy_repo(repo_name)
488
488
489 @mock.patch.object(Repository, 'lock', crash)
489 @mock.patch.object(Repository, 'lock', crash)
490 def test_api_lock_error(self):
490 def test_api_lock_error(self):
491 id_, params = _build_data(self.apikey, 'lock',
491 id_, params = _build_data(self.apikey, 'lock',
492 userid=TEST_USER_ADMIN_LOGIN,
492 userid=TEST_USER_ADMIN_LOGIN,
493 repoid=self.REPO,
493 repoid=self.REPO,
494 locked=True)
494 locked=True)
495 response = api_call(self, params)
495 response = api_call(self, params)
496
496
497 expected = 'Error occurred locking repository `%s`' % self.REPO
497 expected = 'Error occurred locking repository `%s`' % self.REPO
498 self._compare_error(id_, expected, given=response.body)
498 self._compare_error(id_, expected, given=response.body)
499
499
500 def test_api_get_locks_regular_user(self):
500 def test_api_get_locks_regular_user(self):
501 id_, params = _build_data(self.apikey_regular, 'get_locks')
501 id_, params = _build_data(self.apikey_regular, 'get_locks')
502 response = api_call(self, params)
502 response = api_call(self, params)
503 expected = []
503 expected = []
504 self._compare_ok(id_, expected, given=response.body)
504 self._compare_ok(id_, expected, given=response.body)
505
505
506 def test_api_get_locks_with_userid_regular_user(self):
506 def test_api_get_locks_with_userid_regular_user(self):
507 id_, params = _build_data(self.apikey_regular, 'get_locks',
507 id_, params = _build_data(self.apikey_regular, 'get_locks',
508 userid=TEST_USER_ADMIN_LOGIN)
508 userid=TEST_USER_ADMIN_LOGIN)
509 response = api_call(self, params)
509 response = api_call(self, params)
510 expected = 'userid is not the same as your user'
510 expected = 'userid is not the same as your user'
511 self._compare_error(id_, expected, given=response.body)
511 self._compare_error(id_, expected, given=response.body)
512
512
513 def test_api_get_locks(self):
513 def test_api_get_locks(self):
514 id_, params = _build_data(self.apikey, 'get_locks')
514 id_, params = _build_data(self.apikey, 'get_locks')
515 response = api_call(self, params)
515 response = api_call(self, params)
516 expected = []
516 expected = []
517 self._compare_ok(id_, expected, given=response.body)
517 self._compare_ok(id_, expected, given=response.body)
518
518
519 def test_api_get_locks_with_one_locked_repo(self):
519 def test_api_get_locks_with_one_locked_repo(self):
520 repo_name = 'api_delete_me'
520 repo_name = 'api_delete_me'
521 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
521 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
522 cur_user=self.TEST_USER_LOGIN)
522 cur_user=self.TEST_USER_LOGIN)
523 Repository.lock(repo, User.get_by_username(self.TEST_USER_LOGIN).user_id)
523 Repository.lock(repo, User.get_by_username(self.TEST_USER_LOGIN).user_id)
524 try:
524 try:
525 id_, params = _build_data(self.apikey, 'get_locks')
525 id_, params = _build_data(self.apikey, 'get_locks')
526 response = api_call(self, params)
526 response = api_call(self, params)
527 expected = [repo.get_api_data()]
527 expected = [repo.get_api_data()]
528 self._compare_ok(id_, expected, given=response.body)
528 self._compare_ok(id_, expected, given=response.body)
529 finally:
529 finally:
530 fixture.destroy_repo(repo_name)
530 fixture.destroy_repo(repo_name)
531
531
532 def test_api_get_locks_with_one_locked_repo_for_specific_user(self):
532 def test_api_get_locks_with_one_locked_repo_for_specific_user(self):
533 repo_name = 'api_delete_me'
533 repo_name = 'api_delete_me'
534 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
534 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
535 cur_user=self.TEST_USER_LOGIN)
535 cur_user=self.TEST_USER_LOGIN)
536 Repository.lock(repo, User.get_by_username(self.TEST_USER_LOGIN).user_id)
536 Repository.lock(repo, User.get_by_username(self.TEST_USER_LOGIN).user_id)
537 try:
537 try:
538 id_, params = _build_data(self.apikey, 'get_locks',
538 id_, params = _build_data(self.apikey, 'get_locks',
539 userid=self.TEST_USER_LOGIN)
539 userid=self.TEST_USER_LOGIN)
540 response = api_call(self, params)
540 response = api_call(self, params)
541 expected = [repo.get_api_data()]
541 expected = [repo.get_api_data()]
542 self._compare_ok(id_, expected, given=response.body)
542 self._compare_ok(id_, expected, given=response.body)
543 finally:
543 finally:
544 fixture.destroy_repo(repo_name)
544 fixture.destroy_repo(repo_name)
545
545
546 def test_api_get_locks_with_userid(self):
546 def test_api_get_locks_with_userid(self):
547 id_, params = _build_data(self.apikey, 'get_locks',
547 id_, params = _build_data(self.apikey, 'get_locks',
548 userid=TEST_USER_REGULAR_LOGIN)
548 userid=TEST_USER_REGULAR_LOGIN)
549 response = api_call(self, params)
549 response = api_call(self, params)
550 expected = []
550 expected = []
551 self._compare_ok(id_, expected, given=response.body)
551 self._compare_ok(id_, expected, given=response.body)
552
552
553 def test_api_create_existing_user(self):
553 def test_api_create_existing_user(self):
554 id_, params = _build_data(self.apikey, 'create_user',
554 id_, params = _build_data(self.apikey, 'create_user',
555 username=TEST_USER_ADMIN_LOGIN,
555 username=TEST_USER_ADMIN_LOGIN,
556 email='test@foo.com',
556 email='test@foo.com',
557 password='trololo')
557 password='trololo')
558 response = api_call(self, params)
558 response = api_call(self, params)
559
559
560 expected = "user `%s` already exist" % TEST_USER_ADMIN_LOGIN
560 expected = "user `%s` already exist" % TEST_USER_ADMIN_LOGIN
561 self._compare_error(id_, expected, given=response.body)
561 self._compare_error(id_, expected, given=response.body)
562
562
563 def test_api_create_user_with_existing_email(self):
563 def test_api_create_user_with_existing_email(self):
564 id_, params = _build_data(self.apikey, 'create_user',
564 id_, params = _build_data(self.apikey, 'create_user',
565 username=TEST_USER_ADMIN_LOGIN + 'new',
565 username=TEST_USER_ADMIN_LOGIN + 'new',
566 email=TEST_USER_REGULAR_EMAIL,
566 email=TEST_USER_REGULAR_EMAIL,
567 password='trololo')
567 password='trololo')
568 response = api_call(self, params)
568 response = api_call(self, params)
569
569
570 expected = "email `%s` already exist" % TEST_USER_REGULAR_EMAIL
570 expected = "email `%s` already exist" % TEST_USER_REGULAR_EMAIL
571 self._compare_error(id_, expected, given=response.body)
571 self._compare_error(id_, expected, given=response.body)
572
572
573 def test_api_create_user(self):
573 def test_api_create_user(self):
574 username = 'test_new_api_user'
574 username = 'test_new_api_user'
575 email = username + "@foo.com"
575 email = username + "@foo.com"
576
576
577 id_, params = _build_data(self.apikey, 'create_user',
577 id_, params = _build_data(self.apikey, 'create_user',
578 username=username,
578 username=username,
579 email=email,
579 email=email,
580 password='trololo')
580 password='trololo')
581 response = api_call(self, params)
581 response = api_call(self, params)
582
582
583 usr = UserModel().get_by_username(username)
583 usr = UserModel().get_by_username(username)
584 ret = dict(
584 ret = dict(
585 msg='created new user `%s`' % username,
585 msg='created new user `%s`' % username,
586 user=jsonify(usr.get_api_data())
586 user=jsonify(usr.get_api_data())
587 )
587 )
588
588
589 try:
589 try:
590 expected = ret
590 expected = ret
591 self._compare_ok(id_, expected, given=response.body)
591 self._compare_ok(id_, expected, given=response.body)
592 finally:
592 finally:
593 fixture.destroy_user(usr.user_id)
593 fixture.destroy_user(usr.user_id)
594
594
595 def test_api_create_user_without_password(self):
595 def test_api_create_user_without_password(self):
596 username = 'test_new_api_user_passwordless'
596 username = 'test_new_api_user_passwordless'
597 email = username + "@foo.com"
597 email = username + "@foo.com"
598
598
599 id_, params = _build_data(self.apikey, 'create_user',
599 id_, params = _build_data(self.apikey, 'create_user',
600 username=username,
600 username=username,
601 email=email)
601 email=email)
602 response = api_call(self, params)
602 response = api_call(self, params)
603
603
604 usr = UserModel().get_by_username(username)
604 usr = UserModel().get_by_username(username)
605 ret = dict(
605 ret = dict(
606 msg='created new user `%s`' % username,
606 msg='created new user `%s`' % username,
607 user=jsonify(usr.get_api_data())
607 user=jsonify(usr.get_api_data())
608 )
608 )
609 try:
609 try:
610 expected = ret
610 expected = ret
611 self._compare_ok(id_, expected, given=response.body)
611 self._compare_ok(id_, expected, given=response.body)
612 finally:
612 finally:
613 fixture.destroy_user(usr.user_id)
613 fixture.destroy_user(usr.user_id)
614
614
615 def test_api_create_user_with_extern_name(self):
615 def test_api_create_user_with_extern_name(self):
616 username = 'test_new_api_user_passwordless'
616 username = 'test_new_api_user_passwordless'
617 email = username + "@foo.com"
617 email = username + "@foo.com"
618
618
619 id_, params = _build_data(self.apikey, 'create_user',
619 id_, params = _build_data(self.apikey, 'create_user',
620 username=username,
620 username=username,
621 email=email, extern_name='rhodecode')
621 email=email, extern_name='rhodecode')
622 response = api_call(self, params)
622 response = api_call(self, params)
623
623
624 usr = UserModel().get_by_username(username)
624 usr = UserModel().get_by_username(username)
625 ret = dict(
625 ret = dict(
626 msg='created new user `%s`' % username,
626 msg='created new user `%s`' % username,
627 user=jsonify(usr.get_api_data())
627 user=jsonify(usr.get_api_data())
628 )
628 )
629 try:
629 try:
630 expected = ret
630 expected = ret
631 self._compare_ok(id_, expected, given=response.body)
631 self._compare_ok(id_, expected, given=response.body)
632 finally:
632 finally:
633 fixture.destroy_user(usr.user_id)
633 fixture.destroy_user(usr.user_id)
634
634
635 @mock.patch.object(UserModel, 'create_or_update', crash)
635 @mock.patch.object(UserModel, 'create_or_update', crash)
636 def test_api_create_user_when_exception_happened(self):
636 def test_api_create_user_when_exception_happened(self):
637
637
638 username = 'test_new_api_user'
638 username = 'test_new_api_user'
639 email = username + "@foo.com"
639 email = username + "@foo.com"
640
640
641 id_, params = _build_data(self.apikey, 'create_user',
641 id_, params = _build_data(self.apikey, 'create_user',
642 username=username,
642 username=username,
643 email=email,
643 email=email,
644 password='trololo')
644 password='trololo')
645 response = api_call(self, params)
645 response = api_call(self, params)
646 expected = 'failed to create user `%s`' % username
646 expected = 'failed to create user `%s`' % username
647 self._compare_error(id_, expected, given=response.body)
647 self._compare_error(id_, expected, given=response.body)
648
648
649 def test_api_delete_user(self):
649 def test_api_delete_user(self):
650 usr = UserModel().create_or_update(username=u'test_user',
650 usr = UserModel().create_or_update(username=u'test_user',
651 password=u'qweqwe',
651 password=u'qweqwe',
652 email=u'u232@example.com',
652 email=u'u232@example.com',
653 firstname=u'u1', lastname=u'u1')
653 firstname=u'u1', lastname=u'u1')
654 Session().commit()
654 Session().commit()
655 username = usr.username
655 username = usr.username
656 email = usr.email
656 email = usr.email
657 usr_id = usr.user_id
657 usr_id = usr.user_id
658 ## DELETE THIS USER NOW
658 ## DELETE THIS USER NOW
659
659
660 id_, params = _build_data(self.apikey, 'delete_user',
660 id_, params = _build_data(self.apikey, 'delete_user',
661 userid=username, )
661 userid=username, )
662 response = api_call(self, params)
662 response = api_call(self, params)
663
663
664 ret = {'msg': 'deleted user ID:%s %s' % (usr_id, username),
664 ret = {'msg': 'deleted user ID:%s %s' % (usr_id, username),
665 'user': None}
665 'user': None}
666 expected = ret
666 expected = ret
667 self._compare_ok(id_, expected, given=response.body)
667 self._compare_ok(id_, expected, given=response.body)
668
668
669 @mock.patch.object(UserModel, 'delete', crash)
669 @mock.patch.object(UserModel, 'delete', crash)
670 def test_api_delete_user_when_exception_happened(self):
670 def test_api_delete_user_when_exception_happened(self):
671 usr = UserModel().create_or_update(username=u'test_user',
671 usr = UserModel().create_or_update(username=u'test_user',
672 password=u'qweqwe',
672 password=u'qweqwe',
673 email=u'u232@example.com',
673 email=u'u232@example.com',
674 firstname=u'u1', lastname=u'u1')
674 firstname=u'u1', lastname=u'u1')
675 Session().commit()
675 Session().commit()
676 username = usr.username
676 username = usr.username
677
677
678 id_, params = _build_data(self.apikey, 'delete_user',
678 id_, params = _build_data(self.apikey, 'delete_user',
679 userid=username, )
679 userid=username, )
680 response = api_call(self, params)
680 response = api_call(self, params)
681 ret = 'failed to delete user ID:%s %s' % (usr.user_id,
681 ret = 'failed to delete user ID:%s %s' % (usr.user_id,
682 usr.username)
682 usr.username)
683 expected = ret
683 expected = ret
684 self._compare_error(id_, expected, given=response.body)
684 self._compare_error(id_, expected, given=response.body)
685
685
686 @parameterized.expand([('firstname', 'new_username'),
686 @parameterized.expand([('firstname', 'new_username'),
687 ('lastname', 'new_username'),
687 ('lastname', 'new_username'),
688 ('email', 'new_username'),
688 ('email', 'new_username'),
689 ('admin', True),
689 ('admin', True),
690 ('admin', False),
690 ('admin', False),
691 ('extern_type', 'ldap'),
691 ('extern_type', 'ldap'),
692 ('extern_type', None),
692 ('extern_type', None),
693 ('extern_name', 'test'),
693 ('extern_name', 'test'),
694 ('extern_name', None),
694 ('extern_name', None),
695 ('active', False),
695 ('active', False),
696 ('active', True),
696 ('active', True),
697 ('password', 'newpass')
697 ('password', 'newpass')
698 ])
698 ])
699 def test_api_update_user(self, name, expected):
699 def test_api_update_user(self, name, expected):
700 usr = UserModel().get_by_username(self.TEST_USER_LOGIN)
700 usr = UserModel().get_by_username(self.TEST_USER_LOGIN)
701 kw = {name: expected,
701 kw = {name: expected,
702 'userid': usr.user_id}
702 'userid': usr.user_id}
703 id_, params = _build_data(self.apikey, 'update_user', **kw)
703 id_, params = _build_data(self.apikey, 'update_user', **kw)
704 response = api_call(self, params)
704 response = api_call(self, params)
705
705
706 ret = {
706 ret = {
707 'msg': 'updated user ID:%s %s' % (
707 'msg': 'updated user ID:%s %s' % (
708 usr.user_id, self.TEST_USER_LOGIN),
708 usr.user_id, self.TEST_USER_LOGIN),
709 'user': jsonify(UserModel() \
709 'user': jsonify(UserModel() \
710 .get_by_username(self.TEST_USER_LOGIN) \
710 .get_by_username(self.TEST_USER_LOGIN) \
711 .get_api_data())
711 .get_api_data())
712 }
712 }
713
713
714 expected = ret
714 expected = ret
715 self._compare_ok(id_, expected, given=response.body)
715 self._compare_ok(id_, expected, given=response.body)
716
716
717 def test_api_update_user_no_changed_params(self):
717 def test_api_update_user_no_changed_params(self):
718 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
718 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
719 ret = jsonify(usr.get_api_data())
719 ret = jsonify(usr.get_api_data())
720 id_, params = _build_data(self.apikey, 'update_user',
720 id_, params = _build_data(self.apikey, 'update_user',
721 userid=TEST_USER_ADMIN_LOGIN)
721 userid=TEST_USER_ADMIN_LOGIN)
722
722
723 response = api_call(self, params)
723 response = api_call(self, params)
724 ret = {
724 ret = {
725 'msg': 'updated user ID:%s %s' % (
725 'msg': 'updated user ID:%s %s' % (
726 usr.user_id, TEST_USER_ADMIN_LOGIN),
726 usr.user_id, TEST_USER_ADMIN_LOGIN),
727 'user': ret
727 'user': ret
728 }
728 }
729 expected = ret
729 expected = ret
730 self._compare_ok(id_, expected, given=response.body)
730 self._compare_ok(id_, expected, given=response.body)
731
731
732 def test_api_update_user_by_user_id(self):
732 def test_api_update_user_by_user_id(self):
733 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
733 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
734 ret = jsonify(usr.get_api_data())
734 ret = jsonify(usr.get_api_data())
735 id_, params = _build_data(self.apikey, 'update_user',
735 id_, params = _build_data(self.apikey, 'update_user',
736 userid=usr.user_id)
736 userid=usr.user_id)
737
737
738 response = api_call(self, params)
738 response = api_call(self, params)
739 ret = {
739 ret = {
740 'msg': 'updated user ID:%s %s' % (
740 'msg': 'updated user ID:%s %s' % (
741 usr.user_id, TEST_USER_ADMIN_LOGIN),
741 usr.user_id, TEST_USER_ADMIN_LOGIN),
742 'user': ret
742 'user': ret
743 }
743 }
744 expected = ret
744 expected = ret
745 self._compare_ok(id_, expected, given=response.body)
745 self._compare_ok(id_, expected, given=response.body)
746
746
747 def test_api_update_user_default_user(self):
747 def test_api_update_user_default_user(self):
748 usr = User.get_default_user()
748 usr = User.get_default_user()
749 id_, params = _build_data(self.apikey, 'update_user',
749 id_, params = _build_data(self.apikey, 'update_user',
750 userid=usr.user_id)
750 userid=usr.user_id)
751
751
752 response = api_call(self, params)
752 response = api_call(self, params)
753 expected = 'editing default user is forbidden'
753 expected = 'editing default user is forbidden'
754 self._compare_error(id_, expected, given=response.body)
754 self._compare_error(id_, expected, given=response.body)
755
755
756 @mock.patch.object(UserModel, 'update_user', crash)
756 @mock.patch.object(UserModel, 'update_user', crash)
757 def test_api_update_user_when_exception_happens(self):
757 def test_api_update_user_when_exception_happens(self):
758 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
758 usr = UserModel().get_by_username(TEST_USER_ADMIN_LOGIN)
759 ret = jsonify(usr.get_api_data())
759 ret = jsonify(usr.get_api_data())
760 id_, params = _build_data(self.apikey, 'update_user',
760 id_, params = _build_data(self.apikey, 'update_user',
761 userid=usr.user_id)
761 userid=usr.user_id)
762
762
763 response = api_call(self, params)
763 response = api_call(self, params)
764 ret = 'failed to update user `%s`' % usr.user_id
764 ret = 'failed to update user `%s`' % usr.user_id
765
765
766 expected = ret
766 expected = ret
767 self._compare_error(id_, expected, given=response.body)
767 self._compare_error(id_, expected, given=response.body)
768
768
769 def test_api_get_repo(self):
769 def test_api_get_repo(self):
770 new_group = 'some_new_group'
770 new_group = 'some_new_group'
771 make_user_group(new_group)
771 make_user_group(new_group)
772 RepoModel().grant_user_group_permission(repo=self.REPO,
772 RepoModel().grant_user_group_permission(repo=self.REPO,
773 group_name=new_group,
773 group_name=new_group,
774 perm='repository.read')
774 perm='repository.read')
775 Session().commit()
775 Session().commit()
776 id_, params = _build_data(self.apikey, 'get_repo',
776 id_, params = _build_data(self.apikey, 'get_repo',
777 repoid=self.REPO)
777 repoid=self.REPO)
778 response = api_call(self, params)
778 response = api_call(self, params)
779
779
780 repo = RepoModel().get_by_repo_name(self.REPO)
780 repo = RepoModel().get_by_repo_name(self.REPO)
781 ret = repo.get_api_data()
781 ret = repo.get_api_data()
782
782
783 members = []
783 members = []
784 followers = []
784 followers = []
785 for user in repo.repo_to_perm:
785 for user in repo.repo_to_perm:
786 perm = user.permission.permission_name
786 perm = user.permission.permission_name
787 user = user.user
787 user = user.user
788 user_data = {'name': user.username, 'type': "user",
788 user_data = {'name': user.username, 'type': "user",
789 'permission': perm}
789 'permission': perm}
790 members.append(user_data)
790 members.append(user_data)
791
791
792 for user_group in repo.users_group_to_perm:
792 for user_group in repo.users_group_to_perm:
793 perm = user_group.permission.permission_name
793 perm = user_group.permission.permission_name
794 user_group = user_group.users_group
794 user_group = user_group.users_group
795 user_group_data = {'name': user_group.users_group_name,
795 user_group_data = {'name': user_group.users_group_name,
796 'type': "user_group", 'permission': perm}
796 'type': "user_group", 'permission': perm}
797 members.append(user_group_data)
797 members.append(user_group_data)
798
798
799 for user in repo.followers:
799 for user in repo.followers:
800 followers.append(user.user.get_api_data())
800 followers.append(user.user.get_api_data())
801
801
802 ret['members'] = members
802 ret['members'] = members
803 ret['followers'] = followers
803 ret['followers'] = followers
804
804
805 expected = ret
805 expected = ret
806 self._compare_ok(id_, expected, given=response.body)
806 self._compare_ok(id_, expected, given=response.body)
807 fixture.destroy_user_group(new_group)
807 fixture.destroy_user_group(new_group)
808
808
809 @parameterized.expand([
809 @parameterized.expand([
810 ('repository.admin',),
810 ('repository.admin',),
811 ('repository.write',),
811 ('repository.write',),
812 ('repository.read',),
812 ('repository.read',),
813 ])
813 ])
814 def test_api_get_repo_by_non_admin(self, grant_perm):
814 def test_api_get_repo_by_non_admin(self, grant_perm):
815 RepoModel().grant_user_permission(repo=self.REPO,
815 RepoModel().grant_user_permission(repo=self.REPO,
816 user=self.TEST_USER_LOGIN,
816 user=self.TEST_USER_LOGIN,
817 perm=grant_perm)
817 perm=grant_perm)
818 Session().commit()
818 Session().commit()
819 id_, params = _build_data(self.apikey_regular, 'get_repo',
819 id_, params = _build_data(self.apikey_regular, 'get_repo',
820 repoid=self.REPO)
820 repoid=self.REPO)
821 response = api_call(self, params)
821 response = api_call(self, params)
822
822
823 repo = RepoModel().get_by_repo_name(self.REPO)
823 repo = RepoModel().get_by_repo_name(self.REPO)
824 ret = repo.get_api_data()
824 ret = repo.get_api_data()
825
825
826 members = []
826 members = []
827 followers = []
827 followers = []
828 self.assertEqual(2, len(repo.repo_to_perm))
828 self.assertEqual(2, len(repo.repo_to_perm))
829 for user in repo.repo_to_perm:
829 for user in repo.repo_to_perm:
830 perm = user.permission.permission_name
830 perm = user.permission.permission_name
831 user_obj = user.user
831 user_obj = user.user
832 user_data = {'name': user_obj.username, 'type': "user",
832 user_data = {'name': user_obj.username, 'type': "user",
833 'permission': perm}
833 'permission': perm}
834 members.append(user_data)
834 members.append(user_data)
835
835
836 for user_group in repo.users_group_to_perm:
836 for user_group in repo.users_group_to_perm:
837 perm = user_group.permission.permission_name
837 perm = user_group.permission.permission_name
838 user_group_obj = user_group.users_group
838 user_group_obj = user_group.users_group
839 user_group_data = {'name': user_group_obj.users_group_name,
839 user_group_data = {'name': user_group_obj.users_group_name,
840 'type': "user_group", 'permission': perm}
840 'type': "user_group", 'permission': perm}
841 members.append(user_group_data)
841 members.append(user_group_data)
842
842
843 for user in repo.followers:
843 for user in repo.followers:
844 followers.append(user.user.get_api_data())
844 followers.append(user.user.get_api_data())
845
845
846 ret['members'] = members
846 ret['members'] = members
847 ret['followers'] = followers
847 ret['followers'] = followers
848
848
849 expected = ret
849 expected = ret
850 try:
850 try:
851 self._compare_ok(id_, expected, given=response.body)
851 self._compare_ok(id_, expected, given=response.body)
852 finally:
852 finally:
853 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
853 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
854
854
855 def test_api_get_repo_by_non_admin_no_permission_to_repo(self):
855 def test_api_get_repo_by_non_admin_no_permission_to_repo(self):
856 RepoModel().grant_user_permission(repo=self.REPO,
856 RepoModel().grant_user_permission(repo=self.REPO,
857 user=self.TEST_USER_LOGIN,
857 user=self.TEST_USER_LOGIN,
858 perm='repository.none')
858 perm='repository.none')
859
859
860 id_, params = _build_data(self.apikey_regular, 'get_repo',
860 id_, params = _build_data(self.apikey_regular, 'get_repo',
861 repoid=self.REPO)
861 repoid=self.REPO)
862 response = api_call(self, params)
862 response = api_call(self, params)
863
863
864 expected = 'repository `%s` does not exist' % (self.REPO)
864 expected = 'repository `%s` does not exist' % (self.REPO)
865 self._compare_error(id_, expected, given=response.body)
865 self._compare_error(id_, expected, given=response.body)
866
866
867 def test_api_get_repo_that_doesn_not_exist(self):
867 def test_api_get_repo_that_doesn_not_exist(self):
868 id_, params = _build_data(self.apikey, 'get_repo',
868 id_, params = _build_data(self.apikey, 'get_repo',
869 repoid='no-such-repo')
869 repoid='no-such-repo')
870 response = api_call(self, params)
870 response = api_call(self, params)
871
871
872 ret = 'repository `%s` does not exist' % 'no-such-repo'
872 ret = 'repository `%s` does not exist' % 'no-such-repo'
873 expected = ret
873 expected = ret
874 self._compare_error(id_, expected, given=response.body)
874 self._compare_error(id_, expected, given=response.body)
875
875
876 def test_api_get_repos(self):
876 def test_api_get_repos(self):
877 id_, params = _build_data(self.apikey, 'get_repos')
877 id_, params = _build_data(self.apikey, 'get_repos')
878 response = api_call(self, params)
878 response = api_call(self, params)
879
879
880 result = []
880 result = []
881 for repo in RepoModel().get_all():
881 for repo in RepoModel().get_all():
882 result.append(repo.get_api_data())
882 result.append(repo.get_api_data())
883 ret = jsonify(result)
883 ret = jsonify(result)
884
884
885 expected = ret
885 expected = ret
886 self._compare_ok(id_, expected, given=response.body)
886 self._compare_ok(id_, expected, given=response.body)
887
887
888 def test_api_get_repos_non_admin(self):
888 def test_api_get_repos_non_admin(self):
889 id_, params = _build_data(self.apikey_regular, 'get_repos')
889 id_, params = _build_data(self.apikey_regular, 'get_repos')
890 response = api_call(self, params)
890 response = api_call(self, params)
891
891
892 result = []
892 result = []
893 for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN):
893 for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN):
894 result.append(repo.get_api_data())
894 result.append(repo.get_api_data())
895 ret = jsonify(result)
895 ret = jsonify(result)
896
896
897 expected = ret
897 expected = ret
898 self._compare_ok(id_, expected, given=response.body)
898 self._compare_ok(id_, expected, given=response.body)
899
899
900 @parameterized.expand([('all', 'all'),
900 @parameterized.expand([('all', 'all'),
901 ('dirs', 'dirs'),
901 ('dirs', 'dirs'),
902 ('files', 'files'), ])
902 ('files', 'files'), ])
903 def test_api_get_repo_nodes(self, name, ret_type):
903 def test_api_get_repo_nodes(self, name, ret_type):
904 rev = 'tip'
904 rev = 'tip'
905 path = '/'
905 path = '/'
906 id_, params = _build_data(self.apikey, 'get_repo_nodes',
906 id_, params = _build_data(self.apikey, 'get_repo_nodes',
907 repoid=self.REPO, revision=rev,
907 repoid=self.REPO, revision=rev,
908 root_path=path,
908 root_path=path,
909 ret_type=ret_type)
909 ret_type=ret_type)
910 response = api_call(self, params)
910 response = api_call(self, params)
911
911
912 # we don't the actual return types here since it's tested somewhere
912 # we don't the actual return types here since it's tested somewhere
913 # else
913 # else
914 expected = response.json['result']
914 expected = response.json['result']
915 self._compare_ok(id_, expected, given=response.body)
915 self._compare_ok(id_, expected, given=response.body)
916
916
917 def test_api_get_repo_nodes_bad_revisions(self):
917 def test_api_get_repo_nodes_bad_revisions(self):
918 rev = 'i-dont-exist'
918 rev = 'i-dont-exist'
919 path = '/'
919 path = '/'
920 id_, params = _build_data(self.apikey, 'get_repo_nodes',
920 id_, params = _build_data(self.apikey, 'get_repo_nodes',
921 repoid=self.REPO, revision=rev,
921 repoid=self.REPO, revision=rev,
922 root_path=path, )
922 root_path=path, )
923 response = api_call(self, params)
923 response = api_call(self, params)
924
924
925 expected = 'failed to get repo: `%s` nodes' % self.REPO
925 expected = 'failed to get repo: `%s` nodes' % self.REPO
926 self._compare_error(id_, expected, given=response.body)
926 self._compare_error(id_, expected, given=response.body)
927
927
928 def test_api_get_repo_nodes_bad_path(self):
928 def test_api_get_repo_nodes_bad_path(self):
929 rev = 'tip'
929 rev = 'tip'
930 path = '/idontexits'
930 path = '/idontexits'
931 id_, params = _build_data(self.apikey, 'get_repo_nodes',
931 id_, params = _build_data(self.apikey, 'get_repo_nodes',
932 repoid=self.REPO, revision=rev,
932 repoid=self.REPO, revision=rev,
933 root_path=path, )
933 root_path=path, )
934 response = api_call(self, params)
934 response = api_call(self, params)
935
935
936 expected = 'failed to get repo: `%s` nodes' % self.REPO
936 expected = 'failed to get repo: `%s` nodes' % self.REPO
937 self._compare_error(id_, expected, given=response.body)
937 self._compare_error(id_, expected, given=response.body)
938
938
939 def test_api_get_repo_nodes_bad_ret_type(self):
939 def test_api_get_repo_nodes_bad_ret_type(self):
940 rev = 'tip'
940 rev = 'tip'
941 path = '/'
941 path = '/'
942 ret_type = 'error'
942 ret_type = 'error'
943 id_, params = _build_data(self.apikey, 'get_repo_nodes',
943 id_, params = _build_data(self.apikey, 'get_repo_nodes',
944 repoid=self.REPO, revision=rev,
944 repoid=self.REPO, revision=rev,
945 root_path=path,
945 root_path=path,
946 ret_type=ret_type)
946 ret_type=ret_type)
947 response = api_call(self, params)
947 response = api_call(self, params)
948
948
949 expected = ('ret_type must be one of %s'
949 expected = ('ret_type must be one of %s'
950 % (','.join(['files', 'dirs', 'all'])))
950 % (','.join(['files', 'dirs', 'all'])))
951 self._compare_error(id_, expected, given=response.body)
951 self._compare_error(id_, expected, given=response.body)
952
952
953 @parameterized.expand([('all', 'all', 'repository.write'),
953 @parameterized.expand([('all', 'all', 'repository.write'),
954 ('dirs', 'dirs', 'repository.admin'),
954 ('dirs', 'dirs', 'repository.admin'),
955 ('files', 'files', 'repository.read'), ])
955 ('files', 'files', 'repository.read'), ])
956 def test_api_get_repo_nodes_by_regular_user(self, name, ret_type, grant_perm):
956 def test_api_get_repo_nodes_by_regular_user(self, name, ret_type, grant_perm):
957 RepoModel().grant_user_permission(repo=self.REPO,
957 RepoModel().grant_user_permission(repo=self.REPO,
958 user=self.TEST_USER_LOGIN,
958 user=self.TEST_USER_LOGIN,
959 perm=grant_perm)
959 perm=grant_perm)
960 Session().commit()
960 Session().commit()
961
961
962 rev = 'tip'
962 rev = 'tip'
963 path = '/'
963 path = '/'
964 id_, params = _build_data(self.apikey_regular, 'get_repo_nodes',
964 id_, params = _build_data(self.apikey_regular, 'get_repo_nodes',
965 repoid=self.REPO, revision=rev,
965 repoid=self.REPO, revision=rev,
966 root_path=path,
966 root_path=path,
967 ret_type=ret_type)
967 ret_type=ret_type)
968 response = api_call(self, params)
968 response = api_call(self, params)
969
969
970 # we don't the actual return types here since it's tested somewhere
970 # we don't the actual return types here since it's tested somewhere
971 # else
971 # else
972 expected = response.json['result']
972 expected = response.json['result']
973 try:
973 try:
974 self._compare_ok(id_, expected, given=response.body)
974 self._compare_ok(id_, expected, given=response.body)
975 finally:
975 finally:
976 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
976 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
977
977
978 def test_api_create_repo(self):
978 def test_api_create_repo(self):
979 repo_name = 'api-repo'
979 repo_name = 'api-repo'
980 id_, params = _build_data(self.apikey, 'create_repo',
980 id_, params = _build_data(self.apikey, 'create_repo',
981 repo_name=repo_name,
981 repo_name=repo_name,
982 owner=TEST_USER_ADMIN_LOGIN,
982 owner=TEST_USER_ADMIN_LOGIN,
983 repo_type=self.REPO_TYPE,
983 repo_type=self.REPO_TYPE,
984 )
984 )
985 response = api_call(self, params)
985 response = api_call(self, params)
986
986
987 repo = RepoModel().get_by_repo_name(repo_name)
987 repo = RepoModel().get_by_repo_name(repo_name)
988 self.assertNotEqual(repo, None)
988 self.assertNotEqual(repo, None)
989 ret = {
989 ret = {
990 'msg': 'Created new repository `%s`' % repo_name,
990 'msg': 'Created new repository `%s`' % repo_name,
991 'success': True,
991 'success': True,
992 'task': None,
992 'task': None,
993 }
993 }
994 expected = ret
994 expected = ret
995 self._compare_ok(id_, expected, given=response.body)
995 self._compare_ok(id_, expected, given=response.body)
996 fixture.destroy_repo(repo_name)
996 fixture.destroy_repo(repo_name)
997
997
998 def test_api_create_repo_in_group(self):
998 def test_api_create_repo_in_group(self):
999 repo_name = 'my_gr/api-repo'
999 repo_name = 'my_gr/api-repo'
1000 id_, params = _build_data(self.apikey, 'create_repo',
1000 id_, params = _build_data(self.apikey, 'create_repo',
1001 repo_name=repo_name,
1001 repo_name=repo_name,
1002 owner=TEST_USER_ADMIN_LOGIN,
1002 owner=TEST_USER_ADMIN_LOGIN,
1003 repo_type=self.REPO_TYPE,)
1003 repo_type=self.REPO_TYPE,)
1004 response = api_call(self, params)
1004 response = api_call(self, params)
1005 print params
1005 print params
1006 repo = RepoModel().get_by_repo_name(repo_name)
1006 repo = RepoModel().get_by_repo_name(repo_name)
1007 self.assertNotEqual(repo, None)
1007 self.assertNotEqual(repo, None)
1008 ret = {
1008 ret = {
1009 'msg': 'Created new repository `%s`' % repo_name,
1009 'msg': 'Created new repository `%s`' % repo_name,
1010 'success': True,
1010 'success': True,
1011 'task': None,
1011 'task': None,
1012 }
1012 }
1013 expected = ret
1013 expected = ret
1014 self._compare_ok(id_, expected, given=response.body)
1014 self._compare_ok(id_, expected, given=response.body)
1015 fixture.destroy_repo(repo_name)
1015 fixture.destroy_repo(repo_name)
1016 fixture.destroy_repo_group('my_gr')
1016 fixture.destroy_repo_group('my_gr')
1017
1017
1018 def test_api_create_repo_unknown_owner(self):
1018 def test_api_create_repo_unknown_owner(self):
1019 repo_name = 'api-repo'
1019 repo_name = 'api-repo'
1020 owner = 'i-dont-exist'
1020 owner = 'i-dont-exist'
1021 id_, params = _build_data(self.apikey, 'create_repo',
1021 id_, params = _build_data(self.apikey, 'create_repo',
1022 repo_name=repo_name,
1022 repo_name=repo_name,
1023 owner=owner,
1023 owner=owner,
1024 repo_type=self.REPO_TYPE,
1024 repo_type=self.REPO_TYPE,
1025 )
1025 )
1026 response = api_call(self, params)
1026 response = api_call(self, params)
1027 expected = 'user `%s` does not exist' % owner
1027 expected = 'user `%s` does not exist' % owner
1028 self._compare_error(id_, expected, given=response.body)
1028 self._compare_error(id_, expected, given=response.body)
1029
1029
1030 def test_api_create_repo_dont_specify_owner(self):
1030 def test_api_create_repo_dont_specify_owner(self):
1031 repo_name = 'api-repo'
1031 repo_name = 'api-repo'
1032 owner = 'i-dont-exist'
1032 owner = 'i-dont-exist'
1033 id_, params = _build_data(self.apikey, 'create_repo',
1033 id_, params = _build_data(self.apikey, 'create_repo',
1034 repo_name=repo_name,
1034 repo_name=repo_name,
1035 repo_type=self.REPO_TYPE,
1035 repo_type=self.REPO_TYPE,
1036 )
1036 )
1037 response = api_call(self, params)
1037 response = api_call(self, params)
1038
1038
1039 repo = RepoModel().get_by_repo_name(repo_name)
1039 repo = RepoModel().get_by_repo_name(repo_name)
1040 self.assertNotEqual(repo, None)
1040 self.assertNotEqual(repo, None)
1041 ret = {
1041 ret = {
1042 'msg': 'Created new repository `%s`' % repo_name,
1042 'msg': 'Created new repository `%s`' % repo_name,
1043 'success': True,
1043 'success': True,
1044 'task': None,
1044 'task': None,
1045 }
1045 }
1046 expected = ret
1046 expected = ret
1047 self._compare_ok(id_, expected, given=response.body)
1047 self._compare_ok(id_, expected, given=response.body)
1048 fixture.destroy_repo(repo_name)
1048 fixture.destroy_repo(repo_name)
1049
1049
1050 def test_api_create_repo_by_non_admin(self):
1050 def test_api_create_repo_by_non_admin(self):
1051 repo_name = 'api-repo'
1051 repo_name = 'api-repo'
1052 owner = 'i-dont-exist'
1052 owner = 'i-dont-exist'
1053 id_, params = _build_data(self.apikey_regular, 'create_repo',
1053 id_, params = _build_data(self.apikey_regular, 'create_repo',
1054 repo_name=repo_name,
1054 repo_name=repo_name,
1055 repo_type=self.REPO_TYPE,
1055 repo_type=self.REPO_TYPE,
1056 )
1056 )
1057 response = api_call(self, params)
1057 response = api_call(self, params)
1058
1058
1059 repo = RepoModel().get_by_repo_name(repo_name)
1059 repo = RepoModel().get_by_repo_name(repo_name)
1060 self.assertNotEqual(repo, None)
1060 self.assertNotEqual(repo, None)
1061 ret = {
1061 ret = {
1062 'msg': 'Created new repository `%s`' % repo_name,
1062 'msg': 'Created new repository `%s`' % repo_name,
1063 'success': True,
1063 'success': True,
1064 'task': None,
1064 'task': None,
1065 }
1065 }
1066 expected = ret
1066 expected = ret
1067 self._compare_ok(id_, expected, given=response.body)
1067 self._compare_ok(id_, expected, given=response.body)
1068 fixture.destroy_repo(repo_name)
1068 fixture.destroy_repo(repo_name)
1069
1069
1070 def test_api_create_repo_by_non_admin_specify_owner(self):
1070 def test_api_create_repo_by_non_admin_specify_owner(self):
1071 repo_name = 'api-repo'
1071 repo_name = 'api-repo'
1072 owner = 'i-dont-exist'
1072 owner = 'i-dont-exist'
1073 id_, params = _build_data(self.apikey_regular, 'create_repo',
1073 id_, params = _build_data(self.apikey_regular, 'create_repo',
1074 repo_name=repo_name,
1074 repo_name=repo_name,
1075 repo_type=self.REPO_TYPE,
1075 repo_type=self.REPO_TYPE,
1076 owner=owner)
1076 owner=owner)
1077 response = api_call(self, params)
1077 response = api_call(self, params)
1078
1078
1079 expected = 'Only RhodeCode admin can specify `owner` param'
1079 expected = 'Only RhodeCode admin can specify `owner` param'
1080 self._compare_error(id_, expected, given=response.body)
1080 self._compare_error(id_, expected, given=response.body)
1081 fixture.destroy_repo(repo_name)
1081 fixture.destroy_repo(repo_name)
1082
1082
1083 def test_api_create_repo_exists(self):
1083 def test_api_create_repo_exists(self):
1084 repo_name = self.REPO
1084 repo_name = self.REPO
1085 id_, params = _build_data(self.apikey, 'create_repo',
1085 id_, params = _build_data(self.apikey, 'create_repo',
1086 repo_name=repo_name,
1086 repo_name=repo_name,
1087 owner=TEST_USER_ADMIN_LOGIN,
1087 owner=TEST_USER_ADMIN_LOGIN,
1088 repo_type=self.REPO_TYPE,)
1088 repo_type=self.REPO_TYPE,)
1089 response = api_call(self, params)
1089 response = api_call(self, params)
1090 expected = "repo `%s` already exist" % repo_name
1090 expected = "repo `%s` already exist" % repo_name
1091 self._compare_error(id_, expected, given=response.body)
1091 self._compare_error(id_, expected, given=response.body)
1092
1092
1093 @mock.patch.object(RepoModel, 'create', crash)
1093 @mock.patch.object(RepoModel, 'create', crash)
1094 def test_api_create_repo_exception_occurred(self):
1094 def test_api_create_repo_exception_occurred(self):
1095 repo_name = 'api-repo'
1095 repo_name = 'api-repo'
1096 id_, params = _build_data(self.apikey, 'create_repo',
1096 id_, params = _build_data(self.apikey, 'create_repo',
1097 repo_name=repo_name,
1097 repo_name=repo_name,
1098 owner=TEST_USER_ADMIN_LOGIN,
1098 owner=TEST_USER_ADMIN_LOGIN,
1099 repo_type=self.REPO_TYPE,)
1099 repo_type=self.REPO_TYPE,)
1100 response = api_call(self, params)
1100 response = api_call(self, params)
1101 expected = 'failed to create repository `%s`' % repo_name
1101 expected = 'failed to create repository `%s`' % repo_name
1102 self._compare_error(id_, expected, given=response.body)
1102 self._compare_error(id_, expected, given=response.body)
1103
1103
1104 @parameterized.expand([
1104 @parameterized.expand([
1105 ('owner', {'owner': TEST_USER_REGULAR_LOGIN}),
1105 ('owner', {'owner': TEST_USER_REGULAR_LOGIN}),
1106 ('description', {'description': 'new description'}),
1106 ('description', {'description': 'new description'}),
1107 ('active', {'active': True}),
1107 ('active', {'active': True}),
1108 ('active', {'active': False}),
1108 ('active', {'active': False}),
1109 ('clone_uri', {'clone_uri': 'http://foo.com/repo'}),
1109 ('clone_uri', {'clone_uri': 'http://foo.com/repo'}),
1110 ('clone_uri', {'clone_uri': None}),
1110 ('clone_uri', {'clone_uri': None}),
1111 ('landing_rev', {'landing_rev': 'branch:master'}),
1111 ('landing_rev', {'landing_rev': 'branch:master'}),
1112 ('enable_statistics', {'enable_statistics': True}),
1112 ('enable_statistics', {'enable_statistics': True}),
1113 ('enable_locking', {'enable_locking': True}),
1113 ('enable_locking', {'enable_locking': True}),
1114 ('enable_downloads', {'enable_downloads': True}),
1114 ('enable_downloads', {'enable_downloads': True}),
1115 ('name', {'name': 'new_repo_name'}),
1115 ('name', {'name': 'new_repo_name'}),
1116 ('repo_group', {'group': 'test_group_for_update'}),
1116 ('repo_group', {'group': 'test_group_for_update'}),
1117 ])
1117 ])
1118 def test_api_update_repo(self, changing_attr, updates):
1118 def test_api_update_repo(self, changing_attr, updates):
1119 repo_name = 'api_update_me'
1119 repo_name = 'api_update_me'
1120 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1120 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1121 if changing_attr == 'repo_group':
1121 if changing_attr == 'repo_group':
1122 fixture.create_repo_group(updates['group'])
1122 fixture.create_repo_group(updates['group'])
1123
1123
1124 id_, params = _build_data(self.apikey, 'update_repo',
1124 id_, params = _build_data(self.apikey, 'update_repo',
1125 repoid=repo_name, **updates)
1125 repoid=repo_name, **updates)
1126 response = api_call(self, params)
1126 response = api_call(self, params)
1127 if changing_attr == 'name':
1127 if changing_attr == 'name':
1128 repo_name = updates['name']
1128 repo_name = updates['name']
1129 if changing_attr == 'repo_group':
1129 if changing_attr == 'repo_group':
1130 repo_name = '/'.join([updates['group'], repo_name])
1130 repo_name = '/'.join([updates['group'], repo_name])
1131 try:
1131 try:
1132 expected = {
1132 expected = {
1133 'msg': 'updated repo ID:%s %s' % (repo.repo_id, repo_name),
1133 'msg': 'updated repo ID:%s %s' % (repo.repo_id, repo_name),
1134 'repository': repo.get_api_data()
1134 'repository': repo.get_api_data()
1135 }
1135 }
1136 self._compare_ok(id_, expected, given=response.body)
1136 self._compare_ok(id_, expected, given=response.body)
1137 finally:
1137 finally:
1138 fixture.destroy_repo(repo_name)
1138 fixture.destroy_repo(repo_name)
1139 if changing_attr == 'repo_group':
1139 if changing_attr == 'repo_group':
1140 fixture.destroy_repo_group(updates['group'])
1140 fixture.destroy_repo_group(updates['group'])
1141
1141
1142 def test_api_update_repo_repo_group_does_not_exist(self):
1142 def test_api_update_repo_repo_group_does_not_exist(self):
1143 repo_name = 'admin_owned'
1143 repo_name = 'admin_owned'
1144 fixture.create_repo(repo_name)
1144 fixture.create_repo(repo_name)
1145 updates = {'group': 'test_group_for_update'}
1145 updates = {'group': 'test_group_for_update'}
1146 id_, params = _build_data(self.apikey, 'update_repo',
1146 id_, params = _build_data(self.apikey, 'update_repo',
1147 repoid=repo_name, **updates)
1147 repoid=repo_name, **updates)
1148 response = api_call(self, params)
1148 response = api_call(self, params)
1149 try:
1149 try:
1150 expected = 'repository group `%s` does not exist' % updates['group']
1150 expected = 'repository group `%s` does not exist' % updates['group']
1151 self._compare_error(id_, expected, given=response.body)
1151 self._compare_error(id_, expected, given=response.body)
1152 finally:
1152 finally:
1153 fixture.destroy_repo(repo_name)
1153 fixture.destroy_repo(repo_name)
1154
1154
1155 def test_api_update_repo_regular_user_not_allowed(self):
1155 def test_api_update_repo_regular_user_not_allowed(self):
1156 repo_name = 'admin_owned'
1156 repo_name = 'admin_owned'
1157 fixture.create_repo(repo_name)
1157 fixture.create_repo(repo_name)
1158 updates = {'active': False}
1158 updates = {'active': False}
1159 id_, params = _build_data(self.apikey_regular, 'update_repo',
1159 id_, params = _build_data(self.apikey_regular, 'update_repo',
1160 repoid=repo_name, **updates)
1160 repoid=repo_name, **updates)
1161 response = api_call(self, params)
1161 response = api_call(self, params)
1162 try:
1162 try:
1163 expected = 'repository `%s` does not exist' % repo_name
1163 expected = 'repository `%s` does not exist' % repo_name
1164 self._compare_error(id_, expected, given=response.body)
1164 self._compare_error(id_, expected, given=response.body)
1165 finally:
1165 finally:
1166 fixture.destroy_repo(repo_name)
1166 fixture.destroy_repo(repo_name)
1167
1167
1168 @mock.patch.object(RepoModel, 'update', crash)
1168 @mock.patch.object(RepoModel, 'update', crash)
1169 def test_api_update_repo_exception_occured(self):
1169 def test_api_update_repo_exception_occured(self):
1170 repo_name = 'api_update_me'
1170 repo_name = 'api_update_me'
1171 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1171 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1172 id_, params = _build_data(self.apikey, 'update_repo',
1172 id_, params = _build_data(self.apikey, 'update_repo',
1173 repoid=repo_name, owner=TEST_USER_ADMIN_LOGIN,)
1173 repoid=repo_name, owner=TEST_USER_ADMIN_LOGIN,)
1174 response = api_call(self, params)
1174 response = api_call(self, params)
1175 try:
1175 try:
1176 expected = 'failed to update repo `%s`' % repo_name
1176 expected = 'failed to update repo `%s`' % repo_name
1177 self._compare_error(id_, expected, given=response.body)
1177 self._compare_error(id_, expected, given=response.body)
1178 finally:
1178 finally:
1179 fixture.destroy_repo(repo_name)
1179 fixture.destroy_repo(repo_name)
1180
1180
1181 def test_api_delete_repo(self):
1181 def test_api_delete_repo(self):
1182 repo_name = 'api_delete_me'
1182 repo_name = 'api_delete_me'
1183 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1183 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1184
1184
1185 id_, params = _build_data(self.apikey, 'delete_repo',
1185 id_, params = _build_data(self.apikey, 'delete_repo',
1186 repoid=repo_name, )
1186 repoid=repo_name, )
1187 response = api_call(self, params)
1187 response = api_call(self, params)
1188
1188
1189 ret = {
1189 ret = {
1190 'msg': 'Deleted repository `%s`' % repo_name,
1190 'msg': 'Deleted repository `%s`' % repo_name,
1191 'success': True
1191 'success': True
1192 }
1192 }
1193 try:
1193 try:
1194 expected = ret
1194 expected = ret
1195 self._compare_ok(id_, expected, given=response.body)
1195 self._compare_ok(id_, expected, given=response.body)
1196 finally:
1196 finally:
1197 fixture.destroy_repo(repo_name)
1197 fixture.destroy_repo(repo_name)
1198
1198
1199 def test_api_delete_repo_by_non_admin(self):
1199 def test_api_delete_repo_by_non_admin(self):
1200 repo_name = 'api_delete_me'
1200 repo_name = 'api_delete_me'
1201 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
1201 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
1202 cur_user=self.TEST_USER_LOGIN)
1202 cur_user=self.TEST_USER_LOGIN)
1203 id_, params = _build_data(self.apikey_regular, 'delete_repo',
1203 id_, params = _build_data(self.apikey_regular, 'delete_repo',
1204 repoid=repo_name, )
1204 repoid=repo_name, )
1205 response = api_call(self, params)
1205 response = api_call(self, params)
1206
1206
1207 ret = {
1207 ret = {
1208 'msg': 'Deleted repository `%s`' % repo_name,
1208 'msg': 'Deleted repository `%s`' % repo_name,
1209 'success': True
1209 'success': True
1210 }
1210 }
1211 try:
1211 try:
1212 expected = ret
1212 expected = ret
1213 self._compare_ok(id_, expected, given=response.body)
1213 self._compare_ok(id_, expected, given=response.body)
1214 finally:
1214 finally:
1215 fixture.destroy_repo(repo_name)
1215 fixture.destroy_repo(repo_name)
1216
1216
1217 def test_api_delete_repo_by_non_admin_no_permission(self):
1217 def test_api_delete_repo_by_non_admin_no_permission(self):
1218 repo_name = 'api_delete_me'
1218 repo_name = 'api_delete_me'
1219 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1219 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1220 try:
1220 try:
1221 id_, params = _build_data(self.apikey_regular, 'delete_repo',
1221 id_, params = _build_data(self.apikey_regular, 'delete_repo',
1222 repoid=repo_name, )
1222 repoid=repo_name, )
1223 response = api_call(self, params)
1223 response = api_call(self, params)
1224 expected = 'repository `%s` does not exist' % (repo_name)
1224 expected = 'repository `%s` does not exist' % (repo_name)
1225 self._compare_error(id_, expected, given=response.body)
1225 self._compare_error(id_, expected, given=response.body)
1226 finally:
1226 finally:
1227 fixture.destroy_repo(repo_name)
1227 fixture.destroy_repo(repo_name)
1228
1228
1229 def test_api_delete_repo_exception_occurred(self):
1229 def test_api_delete_repo_exception_occurred(self):
1230 repo_name = 'api_delete_me'
1230 repo_name = 'api_delete_me'
1231 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1231 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
1232 try:
1232 try:
1233 with mock.patch.object(RepoModel, 'delete', crash):
1233 with mock.patch.object(RepoModel, 'delete', crash):
1234 id_, params = _build_data(self.apikey, 'delete_repo',
1234 id_, params = _build_data(self.apikey, 'delete_repo',
1235 repoid=repo_name, )
1235 repoid=repo_name, )
1236 response = api_call(self, params)
1236 response = api_call(self, params)
1237
1237
1238 expected = 'failed to delete repository `%s`' % repo_name
1238 expected = 'failed to delete repository `%s`' % repo_name
1239 self._compare_error(id_, expected, given=response.body)
1239 self._compare_error(id_, expected, given=response.body)
1240 finally:
1240 finally:
1241 fixture.destroy_repo(repo_name)
1241 fixture.destroy_repo(repo_name)
1242
1242
1243 def test_api_fork_repo(self):
1243 def test_api_fork_repo(self):
1244 fork_name = 'api-repo-fork'
1244 fork_name = 'api-repo-fork'
1245 id_, params = _build_data(self.apikey, 'fork_repo',
1245 id_, params = _build_data(self.apikey, 'fork_repo',
1246 repoid=self.REPO,
1246 repoid=self.REPO,
1247 fork_name=fork_name,
1247 fork_name=fork_name,
1248 owner=TEST_USER_ADMIN_LOGIN,
1248 owner=TEST_USER_ADMIN_LOGIN,
1249 )
1249 )
1250 response = api_call(self, params)
1250 response = api_call(self, params)
1251
1251
1252 ret = {
1252 ret = {
1253 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
1253 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
1254 fork_name),
1254 fork_name),
1255 'success': True,
1255 'success': True,
1256 'task': None,
1256 'task': None,
1257 }
1257 }
1258 expected = ret
1258 expected = ret
1259 self._compare_ok(id_, expected, given=response.body)
1259 self._compare_ok(id_, expected, given=response.body)
1260 fixture.destroy_repo(fork_name)
1260 fixture.destroy_repo(fork_name)
1261
1261
1262 def test_api_fork_repo_non_admin(self):
1262 def test_api_fork_repo_non_admin(self):
1263 fork_name = 'api-repo-fork'
1263 fork_name = 'api-repo-fork'
1264 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1264 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1265 repoid=self.REPO,
1265 repoid=self.REPO,
1266 fork_name=fork_name,
1266 fork_name=fork_name,
1267 )
1267 )
1268 response = api_call(self, params)
1268 response = api_call(self, params)
1269
1269
1270 ret = {
1270 ret = {
1271 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
1271 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
1272 fork_name),
1272 fork_name),
1273 'success': True,
1273 'success': True,
1274 'task': None,
1274 'task': None,
1275 }
1275 }
1276 expected = ret
1276 expected = ret
1277 self._compare_ok(id_, expected, given=response.body)
1277 self._compare_ok(id_, expected, given=response.body)
1278 fixture.destroy_repo(fork_name)
1278 fixture.destroy_repo(fork_name)
1279
1279
1280 def test_api_fork_repo_non_admin_specify_owner(self):
1280 def test_api_fork_repo_non_admin_specify_owner(self):
1281 fork_name = 'api-repo-fork'
1281 fork_name = 'api-repo-fork'
1282 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1282 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1283 repoid=self.REPO,
1283 repoid=self.REPO,
1284 fork_name=fork_name,
1284 fork_name=fork_name,
1285 owner=TEST_USER_ADMIN_LOGIN,
1285 owner=TEST_USER_ADMIN_LOGIN,
1286 )
1286 )
1287 response = api_call(self, params)
1287 response = api_call(self, params)
1288 expected = 'Only RhodeCode admin can specify `owner` param'
1288 expected = 'Only RhodeCode admin can specify `owner` param'
1289 self._compare_error(id_, expected, given=response.body)
1289 self._compare_error(id_, expected, given=response.body)
1290 fixture.destroy_repo(fork_name)
1290 fixture.destroy_repo(fork_name)
1291
1291
1292 def test_api_fork_repo_non_admin_no_permission_to_fork(self):
1292 def test_api_fork_repo_non_admin_no_permission_to_fork(self):
1293 RepoModel().grant_user_permission(repo=self.REPO,
1293 RepoModel().grant_user_permission(repo=self.REPO,
1294 user=self.TEST_USER_LOGIN,
1294 user=self.TEST_USER_LOGIN,
1295 perm='repository.none')
1295 perm='repository.none')
1296 fork_name = 'api-repo-fork'
1296 fork_name = 'api-repo-fork'
1297 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1297 id_, params = _build_data(self.apikey_regular, 'fork_repo',
1298 repoid=self.REPO,
1298 repoid=self.REPO,
1299 fork_name=fork_name,
1299 fork_name=fork_name,
1300 )
1300 )
1301 response = api_call(self, params)
1301 response = api_call(self, params)
1302 expected = 'repository `%s` does not exist' % (self.REPO)
1302 expected = 'repository `%s` does not exist' % (self.REPO)
1303 self._compare_error(id_, expected, given=response.body)
1303 self._compare_error(id_, expected, given=response.body)
1304 fixture.destroy_repo(fork_name)
1304 fixture.destroy_repo(fork_name)
1305
1305
1306 def test_api_fork_repo_unknown_owner(self):
1306 def test_api_fork_repo_unknown_owner(self):
1307 fork_name = 'api-repo-fork'
1307 fork_name = 'api-repo-fork'
1308 owner = 'i-dont-exist'
1308 owner = 'i-dont-exist'
1309 id_, params = _build_data(self.apikey, 'fork_repo',
1309 id_, params = _build_data(self.apikey, 'fork_repo',
1310 repoid=self.REPO,
1310 repoid=self.REPO,
1311 fork_name=fork_name,
1311 fork_name=fork_name,
1312 owner=owner,
1312 owner=owner,
1313 )
1313 )
1314 response = api_call(self, params)
1314 response = api_call(self, params)
1315 expected = 'user `%s` does not exist' % owner
1315 expected = 'user `%s` does not exist' % owner
1316 self._compare_error(id_, expected, given=response.body)
1316 self._compare_error(id_, expected, given=response.body)
1317
1317
1318 def test_api_fork_repo_fork_exists(self):
1318 def test_api_fork_repo_fork_exists(self):
1319 fork_name = 'api-repo-fork'
1319 fork_name = 'api-repo-fork'
1320 fixture.create_fork(self.REPO, fork_name)
1320 fixture.create_fork(self.REPO, fork_name)
1321
1321
1322 try:
1322 try:
1323 fork_name = 'api-repo-fork'
1323 fork_name = 'api-repo-fork'
1324
1324
1325 id_, params = _build_data(self.apikey, 'fork_repo',
1325 id_, params = _build_data(self.apikey, 'fork_repo',
1326 repoid=self.REPO,
1326 repoid=self.REPO,
1327 fork_name=fork_name,
1327 fork_name=fork_name,
1328 owner=TEST_USER_ADMIN_LOGIN,
1328 owner=TEST_USER_ADMIN_LOGIN,
1329 )
1329 )
1330 response = api_call(self, params)
1330 response = api_call(self, params)
1331
1331
1332 expected = "fork `%s` already exist" % fork_name
1332 expected = "fork `%s` already exist" % fork_name
1333 self._compare_error(id_, expected, given=response.body)
1333 self._compare_error(id_, expected, given=response.body)
1334 finally:
1334 finally:
1335 fixture.destroy_repo(fork_name)
1335 fixture.destroy_repo(fork_name)
1336
1336
1337 def test_api_fork_repo_repo_exists(self):
1337 def test_api_fork_repo_repo_exists(self):
1338 fork_name = self.REPO
1338 fork_name = self.REPO
1339
1339
1340 id_, params = _build_data(self.apikey, 'fork_repo',
1340 id_, params = _build_data(self.apikey, 'fork_repo',
1341 repoid=self.REPO,
1341 repoid=self.REPO,
1342 fork_name=fork_name,
1342 fork_name=fork_name,
1343 owner=TEST_USER_ADMIN_LOGIN,
1343 owner=TEST_USER_ADMIN_LOGIN,
1344 )
1344 )
1345 response = api_call(self, params)
1345 response = api_call(self, params)
1346
1346
1347 expected = "repo `%s` already exist" % fork_name
1347 expected = "repo `%s` already exist" % fork_name
1348 self._compare_error(id_, expected, given=response.body)
1348 self._compare_error(id_, expected, given=response.body)
1349
1349
1350 @mock.patch.object(RepoModel, 'create_fork', crash)
1350 @mock.patch.object(RepoModel, 'create_fork', crash)
1351 def test_api_fork_repo_exception_occurred(self):
1351 def test_api_fork_repo_exception_occurred(self):
1352 fork_name = 'api-repo-fork'
1352 fork_name = 'api-repo-fork'
1353 id_, params = _build_data(self.apikey, 'fork_repo',
1353 id_, params = _build_data(self.apikey, 'fork_repo',
1354 repoid=self.REPO,
1354 repoid=self.REPO,
1355 fork_name=fork_name,
1355 fork_name=fork_name,
1356 owner=TEST_USER_ADMIN_LOGIN,
1356 owner=TEST_USER_ADMIN_LOGIN,
1357 )
1357 )
1358 response = api_call(self, params)
1358 response = api_call(self, params)
1359
1359
1360 expected = 'failed to fork repository `%s` as `%s`' % (self.REPO,
1360 expected = 'failed to fork repository `%s` as `%s`' % (self.REPO,
1361 fork_name)
1361 fork_name)
1362 self._compare_error(id_, expected, given=response.body)
1362 self._compare_error(id_, expected, given=response.body)
1363
1363
1364 def test_api_get_user_group(self):
1364 def test_api_get_user_group(self):
1365 id_, params = _build_data(self.apikey, 'get_user_group',
1365 id_, params = _build_data(self.apikey, 'get_user_group',
1366 usergroupid=TEST_USER_GROUP)
1366 usergroupid=TEST_USER_GROUP)
1367 response = api_call(self, params)
1367 response = api_call(self, params)
1368
1368
1369 user_group = UserGroupModel().get_group(TEST_USER_GROUP)
1369 user_group = UserGroupModel().get_group(TEST_USER_GROUP)
1370 members = []
1370 members = []
1371 for user in user_group.members:
1371 for user in user_group.members:
1372 user = user.user
1372 user = user.user
1373 members.append(user.get_api_data())
1373 members.append(user.get_api_data())
1374
1374
1375 ret = user_group.get_api_data()
1375 ret = user_group.get_api_data()
1376 ret['members'] = members
1376 ret['members'] = members
1377 expected = ret
1377 expected = ret
1378 self._compare_ok(id_, expected, given=response.body)
1378 self._compare_ok(id_, expected, given=response.body)
1379
1379
1380 def test_api_get_user_groups(self):
1380 def test_api_get_user_groups(self):
1381 gr_name = 'test_user_group2'
1381 gr_name = 'test_user_group2'
1382 make_user_group(gr_name)
1382 make_user_group(gr_name)
1383
1383
1384 id_, params = _build_data(self.apikey, 'get_user_groups', )
1384 id_, params = _build_data(self.apikey, 'get_user_groups', )
1385 response = api_call(self, params)
1385 response = api_call(self, params)
1386
1386
1387 try:
1387 try:
1388 expected = []
1388 expected = []
1389 for gr_name in [TEST_USER_GROUP, 'test_user_group2']:
1389 for gr_name in [TEST_USER_GROUP, 'test_user_group2']:
1390 user_group = UserGroupModel().get_group(gr_name)
1390 user_group = UserGroupModel().get_group(gr_name)
1391 ret = user_group.get_api_data()
1391 ret = user_group.get_api_data()
1392 expected.append(ret)
1392 expected.append(ret)
1393 self._compare_ok(id_, expected, given=response.body)
1393 self._compare_ok(id_, expected, given=response.body)
1394 finally:
1394 finally:
1395 fixture.destroy_user_group(gr_name)
1395 fixture.destroy_user_group(gr_name)
1396
1396
1397 def test_api_create_user_group(self):
1397 def test_api_create_user_group(self):
1398 group_name = 'some_new_group'
1398 group_name = 'some_new_group'
1399 id_, params = _build_data(self.apikey, 'create_user_group',
1399 id_, params = _build_data(self.apikey, 'create_user_group',
1400 group_name=group_name)
1400 group_name=group_name)
1401 response = api_call(self, params)
1401 response = api_call(self, params)
1402
1402
1403 ret = {
1403 ret = {
1404 'msg': 'created new user group `%s`' % group_name,
1404 'msg': 'created new user group `%s`' % group_name,
1405 'user_group': jsonify(UserGroupModel() \
1405 'user_group': jsonify(UserGroupModel() \
1406 .get_by_name(group_name) \
1406 .get_by_name(group_name) \
1407 .get_api_data())
1407 .get_api_data())
1408 }
1408 }
1409 expected = ret
1409 expected = ret
1410 self._compare_ok(id_, expected, given=response.body)
1410 self._compare_ok(id_, expected, given=response.body)
1411
1411
1412 fixture.destroy_user_group(group_name)
1412 fixture.destroy_user_group(group_name)
1413
1413
1414 def test_api_get_user_group_that_exist(self):
1414 def test_api_get_user_group_that_exist(self):
1415 id_, params = _build_data(self.apikey, 'create_user_group',
1415 id_, params = _build_data(self.apikey, 'create_user_group',
1416 group_name=TEST_USER_GROUP)
1416 group_name=TEST_USER_GROUP)
1417 response = api_call(self, params)
1417 response = api_call(self, params)
1418
1418
1419 expected = "user group `%s` already exist" % TEST_USER_GROUP
1419 expected = "user group `%s` already exist" % TEST_USER_GROUP
1420 self._compare_error(id_, expected, given=response.body)
1420 self._compare_error(id_, expected, given=response.body)
1421
1421
1422 @mock.patch.object(UserGroupModel, 'create', crash)
1422 @mock.patch.object(UserGroupModel, 'create', crash)
1423 def test_api_get_user_group_exception_occurred(self):
1423 def test_api_get_user_group_exception_occurred(self):
1424 group_name = 'exception_happens'
1424 group_name = 'exception_happens'
1425 id_, params = _build_data(self.apikey, 'create_user_group',
1425 id_, params = _build_data(self.apikey, 'create_user_group',
1426 group_name=group_name)
1426 group_name=group_name)
1427 response = api_call(self, params)
1427 response = api_call(self, params)
1428
1428
1429 expected = 'failed to create group `%s`' % group_name
1429 expected = 'failed to create group `%s`' % group_name
1430 self._compare_error(id_, expected, given=response.body)
1430 self._compare_error(id_, expected, given=response.body)
1431
1431
1432 @parameterized.expand([('group_name', {'group_name': 'new_group_name'}),
1432 @parameterized.expand([('group_name', {'group_name': 'new_group_name'}),
1433 ('group_name', {'group_name': 'test_group_for_update'}),
1433 ('group_name', {'group_name': 'test_group_for_update'}),
1434 ('owner', {'owner': TEST_USER_REGULAR_LOGIN}),
1434 ('owner', {'owner': TEST_USER_REGULAR_LOGIN}),
1435 ('active', {'active': False}),
1435 ('active', {'active': False}),
1436 ('active', {'active': True})])
1436 ('active', {'active': True})])
1437 def test_api_update_user_group(self, changing_attr, updates):
1437 def test_api_update_user_group(self, changing_attr, updates):
1438 gr_name = 'test_group_for_update'
1438 gr_name = 'test_group_for_update'
1439 user_group = fixture.create_user_group(gr_name)
1439 user_group = fixture.create_user_group(gr_name)
1440 id_, params = _build_data(self.apikey, 'update_user_group',
1440 id_, params = _build_data(self.apikey, 'update_user_group',
1441 usergroupid=gr_name, **updates)
1441 usergroupid=gr_name, **updates)
1442 response = api_call(self, params)
1442 response = api_call(self, params)
1443 try:
1443 try:
1444 expected = {
1444 expected = {
1445 'msg': 'updated user group ID:%s %s' % (user_group.users_group_id,
1445 'msg': 'updated user group ID:%s %s' % (user_group.users_group_id,
1446 user_group.users_group_name),
1446 user_group.users_group_name),
1447 'user_group': user_group.get_api_data()
1447 'user_group': user_group.get_api_data()
1448 }
1448 }
1449 self._compare_ok(id_, expected, given=response.body)
1449 self._compare_ok(id_, expected, given=response.body)
1450 finally:
1450 finally:
1451 if changing_attr == 'group_name':
1451 if changing_attr == 'group_name':
1452 # switch to updated name for proper cleanup
1452 # switch to updated name for proper cleanup
1453 gr_name = updates['group_name']
1453 gr_name = updates['group_name']
1454 fixture.destroy_user_group(gr_name)
1454 fixture.destroy_user_group(gr_name)
1455
1455
1456 @mock.patch.object(UserGroupModel, 'update', crash)
1456 @mock.patch.object(UserGroupModel, 'update', crash)
1457 def test_api_update_user_group_exception_occured(self):
1457 def test_api_update_user_group_exception_occured(self):
1458 gr_name = 'test_group'
1458 gr_name = 'test_group'
1459 fixture.create_user_group(gr_name)
1459 fixture.create_user_group(gr_name)
1460 id_, params = _build_data(self.apikey, 'update_user_group',
1460 id_, params = _build_data(self.apikey, 'update_user_group',
1461 usergroupid=gr_name)
1461 usergroupid=gr_name)
1462 response = api_call(self, params)
1462 response = api_call(self, params)
1463 try:
1463 try:
1464 expected = 'failed to update user group `%s`' % gr_name
1464 expected = 'failed to update user group `%s`' % gr_name
1465 self._compare_error(id_, expected, given=response.body)
1465 self._compare_error(id_, expected, given=response.body)
1466 finally:
1466 finally:
1467 fixture.destroy_user_group(gr_name)
1467 fixture.destroy_user_group(gr_name)
1468
1468
1469 def test_api_add_user_to_user_group(self):
1469 def test_api_add_user_to_user_group(self):
1470 gr_name = 'test_group'
1470 gr_name = 'test_group'
1471 fixture.create_user_group(gr_name)
1471 fixture.create_user_group(gr_name)
1472 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1472 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1473 usergroupid=gr_name,
1473 usergroupid=gr_name,
1474 userid=TEST_USER_ADMIN_LOGIN)
1474 userid=TEST_USER_ADMIN_LOGIN)
1475 response = api_call(self, params)
1475 response = api_call(self, params)
1476 try:
1476 try:
1477 expected = {
1477 expected = {
1478 'msg': 'added member `%s` to user group `%s`' % (
1478 'msg': 'added member `%s` to user group `%s`' % (
1479 TEST_USER_ADMIN_LOGIN, gr_name),
1479 TEST_USER_ADMIN_LOGIN, gr_name),
1480 'success': True
1480 'success': True
1481 }
1481 }
1482 self._compare_ok(id_, expected, given=response.body)
1482 self._compare_ok(id_, expected, given=response.body)
1483 finally:
1483 finally:
1484 fixture.destroy_user_group(gr_name)
1484 fixture.destroy_user_group(gr_name)
1485
1485
1486 def test_api_add_user_to_user_group_that_doesnt_exist(self):
1486 def test_api_add_user_to_user_group_that_doesnt_exist(self):
1487 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1487 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1488 usergroupid='false-group',
1488 usergroupid='false-group',
1489 userid=TEST_USER_ADMIN_LOGIN)
1489 userid=TEST_USER_ADMIN_LOGIN)
1490 response = api_call(self, params)
1490 response = api_call(self, params)
1491
1491
1492 expected = 'user group `%s` does not exist' % 'false-group'
1492 expected = 'user group `%s` does not exist' % 'false-group'
1493 self._compare_error(id_, expected, given=response.body)
1493 self._compare_error(id_, expected, given=response.body)
1494
1494
1495 @mock.patch.object(UserGroupModel, 'add_user_to_group', crash)
1495 @mock.patch.object(UserGroupModel, 'add_user_to_group', crash)
1496 def test_api_add_user_to_user_group_exception_occurred(self):
1496 def test_api_add_user_to_user_group_exception_occurred(self):
1497 gr_name = 'test_group'
1497 gr_name = 'test_group'
1498 fixture.create_user_group(gr_name)
1498 fixture.create_user_group(gr_name)
1499 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1499 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
1500 usergroupid=gr_name,
1500 usergroupid=gr_name,
1501 userid=TEST_USER_ADMIN_LOGIN)
1501 userid=TEST_USER_ADMIN_LOGIN)
1502 response = api_call(self, params)
1502 response = api_call(self, params)
1503
1503
1504 try:
1504 try:
1505 expected = 'failed to add member to user group `%s`' % gr_name
1505 expected = 'failed to add member to user group `%s`' % gr_name
1506 self._compare_error(id_, expected, given=response.body)
1506 self._compare_error(id_, expected, given=response.body)
1507 finally:
1507 finally:
1508 fixture.destroy_user_group(gr_name)
1508 fixture.destroy_user_group(gr_name)
1509
1509
1510 def test_api_remove_user_from_user_group(self):
1510 def test_api_remove_user_from_user_group(self):
1511 gr_name = 'test_group_3'
1511 gr_name = 'test_group_3'
1512 gr = fixture.create_user_group(gr_name)
1512 gr = fixture.create_user_group(gr_name)
1513 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN)
1513 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN)
1514 Session().commit()
1514 Session().commit()
1515 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
1515 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
1516 usergroupid=gr_name,
1516 usergroupid=gr_name,
1517 userid=TEST_USER_ADMIN_LOGIN)
1517 userid=TEST_USER_ADMIN_LOGIN)
1518 response = api_call(self, params)
1518 response = api_call(self, params)
1519
1519
1520 try:
1520 try:
1521 expected = {
1521 expected = {
1522 'msg': 'removed member `%s` from user group `%s`' % (
1522 'msg': 'removed member `%s` from user group `%s`' % (
1523 TEST_USER_ADMIN_LOGIN, gr_name
1523 TEST_USER_ADMIN_LOGIN, gr_name
1524 ),
1524 ),
1525 'success': True}
1525 'success': True}
1526 self._compare_ok(id_, expected, given=response.body)
1526 self._compare_ok(id_, expected, given=response.body)
1527 finally:
1527 finally:
1528 fixture.destroy_user_group(gr_name)
1528 fixture.destroy_user_group(gr_name)
1529
1529
1530 @mock.patch.object(UserGroupModel, 'remove_user_from_group', crash)
1530 @mock.patch.object(UserGroupModel, 'remove_user_from_group', crash)
1531 def test_api_remove_user_from_user_group_exception_occurred(self):
1531 def test_api_remove_user_from_user_group_exception_occurred(self):
1532 gr_name = 'test_group_3'
1532 gr_name = 'test_group_3'
1533 gr = fixture.create_user_group(gr_name)
1533 gr = fixture.create_user_group(gr_name)
1534 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN)
1534 UserGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN)
1535 Session().commit()
1535 Session().commit()
1536 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
1536 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
1537 usergroupid=gr_name,
1537 usergroupid=gr_name,
1538 userid=TEST_USER_ADMIN_LOGIN)
1538 userid=TEST_USER_ADMIN_LOGIN)
1539 response = api_call(self, params)
1539 response = api_call(self, params)
1540 try:
1540 try:
1541 expected = 'failed to remove member from user group `%s`' % gr_name
1541 expected = 'failed to remove member from user group `%s`' % gr_name
1542 self._compare_error(id_, expected, given=response.body)
1542 self._compare_error(id_, expected, given=response.body)
1543 finally:
1543 finally:
1544 fixture.destroy_user_group(gr_name)
1544 fixture.destroy_user_group(gr_name)
1545
1545
1546 def test_api_delete_user_group(self):
1546 def test_api_delete_user_group(self):
1547 gr_name = 'test_group'
1547 gr_name = 'test_group'
1548 ugroup = fixture.create_user_group(gr_name)
1548 ugroup = fixture.create_user_group(gr_name)
1549 gr_id = ugroup.users_group_id
1549 gr_id = ugroup.users_group_id
1550 id_, params = _build_data(self.apikey, 'delete_user_group',
1550 id_, params = _build_data(self.apikey, 'delete_user_group',
1551 usergroupid=gr_name,
1551 usergroupid=gr_name,
1552 userid=TEST_USER_ADMIN_LOGIN)
1552 userid=TEST_USER_ADMIN_LOGIN)
1553 response = api_call(self, params)
1553 response = api_call(self, params)
1554
1554
1555 try:
1555 try:
1556 expected = {
1556 expected = {
1557 'user_group': None,
1557 'user_group': None,
1558 'msg': 'deleted user group ID:%s %s' % (gr_id, gr_name)
1558 'msg': 'deleted user group ID:%s %s' % (gr_id, gr_name)
1559 }
1559 }
1560 self._compare_ok(id_, expected, given=response.body)
1560 self._compare_ok(id_, expected, given=response.body)
1561 finally:
1561 finally:
1562 if UserGroupModel().get_by_name(gr_name):
1562 if UserGroupModel().get_by_name(gr_name):
1563 fixture.destroy_user_group(gr_name)
1563 fixture.destroy_user_group(gr_name)
1564
1564
1565 def test_api_delete_user_group_that_is_assigned(self):
1565 def test_api_delete_user_group_that_is_assigned(self):
1566 gr_name = 'test_group'
1566 gr_name = 'test_group'
1567 ugroup = fixture.create_user_group(gr_name)
1567 ugroup = fixture.create_user_group(gr_name)
1568 gr_id = ugroup.users_group_id
1568 gr_id = ugroup.users_group_id
1569
1569
1570 ugr_to_perm = RepoModel().grant_user_group_permission(self.REPO, gr_name, 'repository.write')
1570 ugr_to_perm = RepoModel().grant_user_group_permission(self.REPO, gr_name, 'repository.write')
1571 msg = 'RepoGroup assigned to [%s]' % (ugr_to_perm)
1571 msg = 'RepoGroup assigned to [%s]' % (ugr_to_perm)
1572
1572
1573 id_, params = _build_data(self.apikey, 'delete_user_group',
1573 id_, params = _build_data(self.apikey, 'delete_user_group',
1574 usergroupid=gr_name,
1574 usergroupid=gr_name,
1575 userid=TEST_USER_ADMIN_LOGIN)
1575 userid=TEST_USER_ADMIN_LOGIN)
1576 response = api_call(self, params)
1576 response = api_call(self, params)
1577
1577
1578 try:
1578 try:
1579 expected = msg
1579 expected = msg
1580 self._compare_error(id_, expected, given=response.body)
1580 self._compare_error(id_, expected, given=response.body)
1581 finally:
1581 finally:
1582 if UserGroupModel().get_by_name(gr_name):
1582 if UserGroupModel().get_by_name(gr_name):
1583 fixture.destroy_user_group(gr_name)
1583 fixture.destroy_user_group(gr_name)
1584
1584
1585 def test_api_delete_user_group_exception_occured(self):
1585 def test_api_delete_user_group_exception_occured(self):
1586 gr_name = 'test_group'
1586 gr_name = 'test_group'
1587 ugroup = fixture.create_user_group(gr_name)
1587 ugroup = fixture.create_user_group(gr_name)
1588 gr_id = ugroup.users_group_id
1588 gr_id = ugroup.users_group_id
1589 id_, params = _build_data(self.apikey, 'delete_user_group',
1589 id_, params = _build_data(self.apikey, 'delete_user_group',
1590 usergroupid=gr_name,
1590 usergroupid=gr_name,
1591 userid=TEST_USER_ADMIN_LOGIN)
1591 userid=TEST_USER_ADMIN_LOGIN)
1592
1592
1593 try:
1593 try:
1594 with mock.patch.object(UserGroupModel, 'delete', crash):
1594 with mock.patch.object(UserGroupModel, 'delete', crash):
1595 response = api_call(self, params)
1595 response = api_call(self, params)
1596 expected = 'failed to delete user group ID:%s %s' % (gr_id, gr_name)
1596 expected = 'failed to delete user group ID:%s %s' % (gr_id, gr_name)
1597 self._compare_error(id_, expected, given=response.body)
1597 self._compare_error(id_, expected, given=response.body)
1598 finally:
1598 finally:
1599 fixture.destroy_user_group(gr_name)
1599 fixture.destroy_user_group(gr_name)
1600
1600
1601 @parameterized.expand([('none', 'repository.none'),
1601 @parameterized.expand([('none', 'repository.none'),
1602 ('read', 'repository.read'),
1602 ('read', 'repository.read'),
1603 ('write', 'repository.write'),
1603 ('write', 'repository.write'),
1604 ('admin', 'repository.admin')])
1604 ('admin', 'repository.admin')])
1605 def test_api_grant_user_permission(self, name, perm):
1605 def test_api_grant_user_permission(self, name, perm):
1606 id_, params = _build_data(self.apikey,
1606 id_, params = _build_data(self.apikey,
1607 'grant_user_permission',
1607 'grant_user_permission',
1608 repoid=self.REPO,
1608 repoid=self.REPO,
1609 userid=TEST_USER_ADMIN_LOGIN,
1609 userid=TEST_USER_ADMIN_LOGIN,
1610 perm=perm)
1610 perm=perm)
1611 response = api_call(self, params)
1611 response = api_call(self, params)
1612
1612
1613 ret = {
1613 ret = {
1614 'msg': 'Granted perm: `%s` for user: `%s` in repo: `%s`' % (
1614 'msg': 'Granted perm: `%s` for user: `%s` in repo: `%s`' % (
1615 perm, TEST_USER_ADMIN_LOGIN, self.REPO
1615 perm, TEST_USER_ADMIN_LOGIN, self.REPO
1616 ),
1616 ),
1617 'success': True
1617 'success': True
1618 }
1618 }
1619 expected = ret
1619 expected = ret
1620 self._compare_ok(id_, expected, given=response.body)
1620 self._compare_ok(id_, expected, given=response.body)
1621
1621
1622 def test_api_grant_user_permission_wrong_permission(self):
1622 def test_api_grant_user_permission_wrong_permission(self):
1623 perm = 'haha.no.permission'
1623 perm = 'haha.no.permission'
1624 id_, params = _build_data(self.apikey,
1624 id_, params = _build_data(self.apikey,
1625 'grant_user_permission',
1625 'grant_user_permission',
1626 repoid=self.REPO,
1626 repoid=self.REPO,
1627 userid=TEST_USER_ADMIN_LOGIN,
1627 userid=TEST_USER_ADMIN_LOGIN,
1628 perm=perm)
1628 perm=perm)
1629 response = api_call(self, params)
1629 response = api_call(self, params)
1630
1630
1631 expected = 'permission `%s` does not exist' % perm
1631 expected = 'permission `%s` does not exist' % perm
1632 self._compare_error(id_, expected, given=response.body)
1632 self._compare_error(id_, expected, given=response.body)
1633
1633
1634 @mock.patch.object(RepoModel, 'grant_user_permission', crash)
1634 @mock.patch.object(RepoModel, 'grant_user_permission', crash)
1635 def test_api_grant_user_permission_exception_when_adding(self):
1635 def test_api_grant_user_permission_exception_when_adding(self):
1636 perm = 'repository.read'
1636 perm = 'repository.read'
1637 id_, params = _build_data(self.apikey,
1637 id_, params = _build_data(self.apikey,
1638 'grant_user_permission',
1638 'grant_user_permission',
1639 repoid=self.REPO,
1639 repoid=self.REPO,
1640 userid=TEST_USER_ADMIN_LOGIN,
1640 userid=TEST_USER_ADMIN_LOGIN,
1641 perm=perm)
1641 perm=perm)
1642 response = api_call(self, params)
1642 response = api_call(self, params)
1643
1643
1644 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
1644 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
1645 TEST_USER_ADMIN_LOGIN, self.REPO
1645 TEST_USER_ADMIN_LOGIN, self.REPO
1646 )
1646 )
1647 self._compare_error(id_, expected, given=response.body)
1647 self._compare_error(id_, expected, given=response.body)
1648
1648
1649 def test_api_revoke_user_permission(self):
1649 def test_api_revoke_user_permission(self):
1650 id_, params = _build_data(self.apikey,
1650 id_, params = _build_data(self.apikey,
1651 'revoke_user_permission',
1651 'revoke_user_permission',
1652 repoid=self.REPO,
1652 repoid=self.REPO,
1653 userid=TEST_USER_ADMIN_LOGIN, )
1653 userid=TEST_USER_ADMIN_LOGIN, )
1654 response = api_call(self, params)
1654 response = api_call(self, params)
1655
1655
1656 expected = {
1656 expected = {
1657 'msg': 'Revoked perm for user: `%s` in repo: `%s`' % (
1657 'msg': 'Revoked perm for user: `%s` in repo: `%s`' % (
1658 TEST_USER_ADMIN_LOGIN, self.REPO
1658 TEST_USER_ADMIN_LOGIN, self.REPO
1659 ),
1659 ),
1660 'success': True
1660 'success': True
1661 }
1661 }
1662 self._compare_ok(id_, expected, given=response.body)
1662 self._compare_ok(id_, expected, given=response.body)
1663
1663
1664 @mock.patch.object(RepoModel, 'revoke_user_permission', crash)
1664 @mock.patch.object(RepoModel, 'revoke_user_permission', crash)
1665 def test_api_revoke_user_permission_exception_when_adding(self):
1665 def test_api_revoke_user_permission_exception_when_adding(self):
1666 id_, params = _build_data(self.apikey,
1666 id_, params = _build_data(self.apikey,
1667 'revoke_user_permission',
1667 'revoke_user_permission',
1668 repoid=self.REPO,
1668 repoid=self.REPO,
1669 userid=TEST_USER_ADMIN_LOGIN, )
1669 userid=TEST_USER_ADMIN_LOGIN, )
1670 response = api_call(self, params)
1670 response = api_call(self, params)
1671
1671
1672 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
1672 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
1673 TEST_USER_ADMIN_LOGIN, self.REPO
1673 TEST_USER_ADMIN_LOGIN, self.REPO
1674 )
1674 )
1675 self._compare_error(id_, expected, given=response.body)
1675 self._compare_error(id_, expected, given=response.body)
1676
1676
1677 @parameterized.expand([('none', 'repository.none'),
1677 @parameterized.expand([('none', 'repository.none'),
1678 ('read', 'repository.read'),
1678 ('read', 'repository.read'),
1679 ('write', 'repository.write'),
1679 ('write', 'repository.write'),
1680 ('admin', 'repository.admin')])
1680 ('admin', 'repository.admin')])
1681 def test_api_grant_user_group_permission(self, name, perm):
1681 def test_api_grant_user_group_permission(self, name, perm):
1682 id_, params = _build_data(self.apikey,
1682 id_, params = _build_data(self.apikey,
1683 'grant_user_group_permission',
1683 'grant_user_group_permission',
1684 repoid=self.REPO,
1684 repoid=self.REPO,
1685 usergroupid=TEST_USER_GROUP,
1685 usergroupid=TEST_USER_GROUP,
1686 perm=perm)
1686 perm=perm)
1687 response = api_call(self, params)
1687 response = api_call(self, params)
1688
1688
1689 ret = {
1689 ret = {
1690 'msg': 'Granted perm: `%s` for user group: `%s` in repo: `%s`' % (
1690 'msg': 'Granted perm: `%s` for user group: `%s` in repo: `%s`' % (
1691 perm, TEST_USER_GROUP, self.REPO
1691 perm, TEST_USER_GROUP, self.REPO
1692 ),
1692 ),
1693 'success': True
1693 'success': True
1694 }
1694 }
1695 expected = ret
1695 expected = ret
1696 self._compare_ok(id_, expected, given=response.body)
1696 self._compare_ok(id_, expected, given=response.body)
1697
1697
1698 def test_api_grant_user_group_permission_wrong_permission(self):
1698 def test_api_grant_user_group_permission_wrong_permission(self):
1699 perm = 'haha.no.permission'
1699 perm = 'haha.no.permission'
1700 id_, params = _build_data(self.apikey,
1700 id_, params = _build_data(self.apikey,
1701 'grant_user_group_permission',
1701 'grant_user_group_permission',
1702 repoid=self.REPO,
1702 repoid=self.REPO,
1703 usergroupid=TEST_USER_GROUP,
1703 usergroupid=TEST_USER_GROUP,
1704 perm=perm)
1704 perm=perm)
1705 response = api_call(self, params)
1705 response = api_call(self, params)
1706
1706
1707 expected = 'permission `%s` does not exist' % perm
1707 expected = 'permission `%s` does not exist' % perm
1708 self._compare_error(id_, expected, given=response.body)
1708 self._compare_error(id_, expected, given=response.body)
1709
1709
1710 @mock.patch.object(RepoModel, 'grant_user_group_permission', crash)
1710 @mock.patch.object(RepoModel, 'grant_user_group_permission', crash)
1711 def test_api_grant_user_group_permission_exception_when_adding(self):
1711 def test_api_grant_user_group_permission_exception_when_adding(self):
1712 perm = 'repository.read'
1712 perm = 'repository.read'
1713 id_, params = _build_data(self.apikey,
1713 id_, params = _build_data(self.apikey,
1714 'grant_user_group_permission',
1714 'grant_user_group_permission',
1715 repoid=self.REPO,
1715 repoid=self.REPO,
1716 usergroupid=TEST_USER_GROUP,
1716 usergroupid=TEST_USER_GROUP,
1717 perm=perm)
1717 perm=perm)
1718 response = api_call(self, params)
1718 response = api_call(self, params)
1719
1719
1720 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
1720 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
1721 TEST_USER_GROUP, self.REPO
1721 TEST_USER_GROUP, self.REPO
1722 )
1722 )
1723 self._compare_error(id_, expected, given=response.body)
1723 self._compare_error(id_, expected, given=response.body)
1724
1724
1725 def test_api_revoke_user_group_permission(self):
1725 def test_api_revoke_user_group_permission(self):
1726 RepoModel().grant_user_group_permission(repo=self.REPO,
1726 RepoModel().grant_user_group_permission(repo=self.REPO,
1727 group_name=TEST_USER_GROUP,
1727 group_name=TEST_USER_GROUP,
1728 perm='repository.read')
1728 perm='repository.read')
1729 Session().commit()
1729 Session().commit()
1730 id_, params = _build_data(self.apikey,
1730 id_, params = _build_data(self.apikey,
1731 'revoke_user_group_permission',
1731 'revoke_user_group_permission',
1732 repoid=self.REPO,
1732 repoid=self.REPO,
1733 usergroupid=TEST_USER_GROUP, )
1733 usergroupid=TEST_USER_GROUP, )
1734 response = api_call(self, params)
1734 response = api_call(self, params)
1735
1735
1736 expected = {
1736 expected = {
1737 'msg': 'Revoked perm for user group: `%s` in repo: `%s`' % (
1737 'msg': 'Revoked perm for user group: `%s` in repo: `%s`' % (
1738 TEST_USER_GROUP, self.REPO
1738 TEST_USER_GROUP, self.REPO
1739 ),
1739 ),
1740 'success': True
1740 'success': True
1741 }
1741 }
1742 self._compare_ok(id_, expected, given=response.body)
1742 self._compare_ok(id_, expected, given=response.body)
1743
1743
1744 @mock.patch.object(RepoModel, 'revoke_user_group_permission', crash)
1744 @mock.patch.object(RepoModel, 'revoke_user_group_permission', crash)
1745 def test_api_revoke_user_group_permission_exception_when_adding(self):
1745 def test_api_revoke_user_group_permission_exception_when_adding(self):
1746 id_, params = _build_data(self.apikey,
1746 id_, params = _build_data(self.apikey,
1747 'revoke_user_group_permission',
1747 'revoke_user_group_permission',
1748 repoid=self.REPO,
1748 repoid=self.REPO,
1749 usergroupid=TEST_USER_GROUP, )
1749 usergroupid=TEST_USER_GROUP, )
1750 response = api_call(self, params)
1750 response = api_call(self, params)
1751
1751
1752 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
1752 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
1753 TEST_USER_GROUP, self.REPO
1753 TEST_USER_GROUP, self.REPO
1754 )
1754 )
1755 self._compare_error(id_, expected, given=response.body)
1755 self._compare_error(id_, expected, given=response.body)
1756
1756
1757 @parameterized.expand([
1757 @parameterized.expand([
1758 ('none', 'group.none', 'none'),
1758 ('none', 'group.none', 'none'),
1759 ('read', 'group.read', 'none'),
1759 ('read', 'group.read', 'none'),
1760 ('write', 'group.write', 'none'),
1760 ('write', 'group.write', 'none'),
1761 ('admin', 'group.admin', 'none'),
1761 ('admin', 'group.admin', 'none'),
1762
1762
1763 ('none', 'group.none', 'all'),
1763 ('none', 'group.none', 'all'),
1764 ('read', 'group.read', 'all'),
1764 ('read', 'group.read', 'all'),
1765 ('write', 'group.write', 'all'),
1765 ('write', 'group.write', 'all'),
1766 ('admin', 'group.admin', 'all'),
1766 ('admin', 'group.admin', 'all'),
1767
1767
1768 ('none', 'group.none', 'repos'),
1768 ('none', 'group.none', 'repos'),
1769 ('read', 'group.read', 'repos'),
1769 ('read', 'group.read', 'repos'),
1770 ('write', 'group.write', 'repos'),
1770 ('write', 'group.write', 'repos'),
1771 ('admin', 'group.admin', 'repos'),
1771 ('admin', 'group.admin', 'repos'),
1772
1772
1773 ('none', 'group.none', 'groups'),
1773 ('none', 'group.none', 'groups'),
1774 ('read', 'group.read', 'groups'),
1774 ('read', 'group.read', 'groups'),
1775 ('write', 'group.write', 'groups'),
1775 ('write', 'group.write', 'groups'),
1776 ('admin', 'group.admin', 'groups'),
1776 ('admin', 'group.admin', 'groups'),
1777 ])
1777 ])
1778 def test_api_grant_user_permission_to_repo_group(self, name, perm, apply_to_children):
1778 def test_api_grant_user_permission_to_repo_group(self, name, perm, apply_to_children):
1779 id_, params = _build_data(self.apikey,
1779 id_, params = _build_data(self.apikey,
1780 'grant_user_permission_to_repo_group',
1780 'grant_user_permission_to_repo_group',
1781 repogroupid=TEST_REPO_GROUP,
1781 repogroupid=TEST_REPO_GROUP,
1782 userid=TEST_USER_ADMIN_LOGIN,
1782 userid=TEST_USER_ADMIN_LOGIN,
1783 perm=perm, apply_to_children=apply_to_children)
1783 perm=perm, apply_to_children=apply_to_children)
1784 response = api_call(self, params)
1784 response = api_call(self, params)
1785
1785
1786 ret = {
1786 ret = {
1787 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
1787 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
1788 perm, apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1788 perm, apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1789 ),
1789 ),
1790 'success': True
1790 'success': True
1791 }
1791 }
1792 expected = ret
1792 expected = ret
1793 self._compare_ok(id_, expected, given=response.body)
1793 self._compare_ok(id_, expected, given=response.body)
1794
1794
1795 @parameterized.expand([
1795 @parameterized.expand([
1796 ('none_fails', 'group.none', 'none', False, False),
1796 ('none_fails', 'group.none', 'none', False, False),
1797 ('read_fails', 'group.read', 'none', False, False),
1797 ('read_fails', 'group.read', 'none', False, False),
1798 ('write_fails', 'group.write', 'none', False, False),
1798 ('write_fails', 'group.write', 'none', False, False),
1799 ('admin_fails', 'group.admin', 'none', False, False),
1799 ('admin_fails', 'group.admin', 'none', False, False),
1800
1800
1801 # with granted perms
1801 # with granted perms
1802 ('none_ok', 'group.none', 'none', True, True),
1802 ('none_ok', 'group.none', 'none', True, True),
1803 ('read_ok', 'group.read', 'none', True, True),
1803 ('read_ok', 'group.read', 'none', True, True),
1804 ('write_ok', 'group.write', 'none', True, True),
1804 ('write_ok', 'group.write', 'none', True, True),
1805 ('admin_ok', 'group.admin', 'none', True, True),
1805 ('admin_ok', 'group.admin', 'none', True, True),
1806 ])
1806 ])
1807 def test_api_grant_user_permission_to_repo_group_by_regular_user(
1807 def test_api_grant_user_permission_to_repo_group_by_regular_user(
1808 self, name, perm, apply_to_children, grant_admin, access_ok):
1808 self, name, perm, apply_to_children, grant_admin, access_ok):
1809 if grant_admin:
1809 if grant_admin:
1810 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1810 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1811 self.TEST_USER_LOGIN,
1811 self.TEST_USER_LOGIN,
1812 'group.admin')
1812 'group.admin')
1813 Session().commit()
1813 Session().commit()
1814
1814
1815 id_, params = _build_data(self.apikey_regular,
1815 id_, params = _build_data(self.apikey_regular,
1816 'grant_user_permission_to_repo_group',
1816 'grant_user_permission_to_repo_group',
1817 repogroupid=TEST_REPO_GROUP,
1817 repogroupid=TEST_REPO_GROUP,
1818 userid=TEST_USER_ADMIN_LOGIN,
1818 userid=TEST_USER_ADMIN_LOGIN,
1819 perm=perm, apply_to_children=apply_to_children)
1819 perm=perm, apply_to_children=apply_to_children)
1820 response = api_call(self, params)
1820 response = api_call(self, params)
1821 if access_ok:
1821 if access_ok:
1822 ret = {
1822 ret = {
1823 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
1823 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
1824 perm, apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1824 perm, apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1825 ),
1825 ),
1826 'success': True
1826 'success': True
1827 }
1827 }
1828 expected = ret
1828 expected = ret
1829 self._compare_ok(id_, expected, given=response.body)
1829 self._compare_ok(id_, expected, given=response.body)
1830 else:
1830 else:
1831 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
1831 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
1832 self._compare_error(id_, expected, given=response.body)
1832 self._compare_error(id_, expected, given=response.body)
1833
1833
1834 def test_api_grant_user_permission_to_repo_group_wrong_permission(self):
1834 def test_api_grant_user_permission_to_repo_group_wrong_permission(self):
1835 perm = 'haha.no.permission'
1835 perm = 'haha.no.permission'
1836 id_, params = _build_data(self.apikey,
1836 id_, params = _build_data(self.apikey,
1837 'grant_user_permission_to_repo_group',
1837 'grant_user_permission_to_repo_group',
1838 repogroupid=TEST_REPO_GROUP,
1838 repogroupid=TEST_REPO_GROUP,
1839 userid=TEST_USER_ADMIN_LOGIN,
1839 userid=TEST_USER_ADMIN_LOGIN,
1840 perm=perm)
1840 perm=perm)
1841 response = api_call(self, params)
1841 response = api_call(self, params)
1842
1842
1843 expected = 'permission `%s` does not exist' % perm
1843 expected = 'permission `%s` does not exist' % perm
1844 self._compare_error(id_, expected, given=response.body)
1844 self._compare_error(id_, expected, given=response.body)
1845
1845
1846 @mock.patch.object(RepoGroupModel, 'grant_user_permission', crash)
1846 @mock.patch.object(RepoGroupModel, 'grant_user_permission', crash)
1847 def test_api_grant_user_permission_to_repo_group_exception_when_adding(self):
1847 def test_api_grant_user_permission_to_repo_group_exception_when_adding(self):
1848 perm = 'group.read'
1848 perm = 'group.read'
1849 id_, params = _build_data(self.apikey,
1849 id_, params = _build_data(self.apikey,
1850 'grant_user_permission_to_repo_group',
1850 'grant_user_permission_to_repo_group',
1851 repogroupid=TEST_REPO_GROUP,
1851 repogroupid=TEST_REPO_GROUP,
1852 userid=TEST_USER_ADMIN_LOGIN,
1852 userid=TEST_USER_ADMIN_LOGIN,
1853 perm=perm)
1853 perm=perm)
1854 response = api_call(self, params)
1854 response = api_call(self, params)
1855
1855
1856 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
1856 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
1857 TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1857 TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1858 )
1858 )
1859 self._compare_error(id_, expected, given=response.body)
1859 self._compare_error(id_, expected, given=response.body)
1860
1860
1861 @parameterized.expand([
1861 @parameterized.expand([
1862 ('none', 'none'),
1862 ('none', 'none'),
1863 ('all', 'all'),
1863 ('all', 'all'),
1864 ('repos', 'repos'),
1864 ('repos', 'repos'),
1865 ('groups', 'groups'),
1865 ('groups', 'groups'),
1866 ])
1866 ])
1867 def test_api_revoke_user_permission_from_repo_group(self, name, apply_to_children):
1867 def test_api_revoke_user_permission_from_repo_group(self, name, apply_to_children):
1868 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
1868 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
1869 user=TEST_USER_ADMIN_LOGIN,
1869 user=TEST_USER_ADMIN_LOGIN,
1870 perm='group.read',)
1870 perm='group.read',)
1871 Session().commit()
1871 Session().commit()
1872
1872
1873 id_, params = _build_data(self.apikey,
1873 id_, params = _build_data(self.apikey,
1874 'revoke_user_permission_from_repo_group',
1874 'revoke_user_permission_from_repo_group',
1875 repogroupid=TEST_REPO_GROUP,
1875 repogroupid=TEST_REPO_GROUP,
1876 userid=TEST_USER_ADMIN_LOGIN,
1876 userid=TEST_USER_ADMIN_LOGIN,
1877 apply_to_children=apply_to_children,)
1877 apply_to_children=apply_to_children,)
1878 response = api_call(self, params)
1878 response = api_call(self, params)
1879
1879
1880 expected = {
1880 expected = {
1881 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
1881 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
1882 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1882 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1883 ),
1883 ),
1884 'success': True
1884 'success': True
1885 }
1885 }
1886 self._compare_ok(id_, expected, given=response.body)
1886 self._compare_ok(id_, expected, given=response.body)
1887
1887
1888 @parameterized.expand([
1888 @parameterized.expand([
1889 ('none', 'none', False, False),
1889 ('none', 'none', False, False),
1890 ('all', 'all', False, False),
1890 ('all', 'all', False, False),
1891 ('repos', 'repos', False, False),
1891 ('repos', 'repos', False, False),
1892 ('groups', 'groups', False, False),
1892 ('groups', 'groups', False, False),
1893
1893
1894 # after granting admin rights
1894 # after granting admin rights
1895 ('none', 'none', False, False),
1895 ('none', 'none', False, False),
1896 ('all', 'all', False, False),
1896 ('all', 'all', False, False),
1897 ('repos', 'repos', False, False),
1897 ('repos', 'repos', False, False),
1898 ('groups', 'groups', False, False),
1898 ('groups', 'groups', False, False),
1899 ])
1899 ])
1900 def test_api_revoke_user_permission_from_repo_group_by_regular_user(
1900 def test_api_revoke_user_permission_from_repo_group_by_regular_user(
1901 self, name, apply_to_children, grant_admin, access_ok):
1901 self, name, apply_to_children, grant_admin, access_ok):
1902 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
1902 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
1903 user=TEST_USER_ADMIN_LOGIN,
1903 user=TEST_USER_ADMIN_LOGIN,
1904 perm='group.read',)
1904 perm='group.read',)
1905 Session().commit()
1905 Session().commit()
1906
1906
1907 if grant_admin:
1907 if grant_admin:
1908 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1908 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1909 self.TEST_USER_LOGIN,
1909 self.TEST_USER_LOGIN,
1910 'group.admin')
1910 'group.admin')
1911 Session().commit()
1911 Session().commit()
1912
1912
1913 id_, params = _build_data(self.apikey_regular,
1913 id_, params = _build_data(self.apikey_regular,
1914 'revoke_user_permission_from_repo_group',
1914 'revoke_user_permission_from_repo_group',
1915 repogroupid=TEST_REPO_GROUP,
1915 repogroupid=TEST_REPO_GROUP,
1916 userid=TEST_USER_ADMIN_LOGIN,
1916 userid=TEST_USER_ADMIN_LOGIN,
1917 apply_to_children=apply_to_children,)
1917 apply_to_children=apply_to_children,)
1918 response = api_call(self, params)
1918 response = api_call(self, params)
1919 if access_ok:
1919 if access_ok:
1920 expected = {
1920 expected = {
1921 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
1921 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
1922 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1922 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1923 ),
1923 ),
1924 'success': True
1924 'success': True
1925 }
1925 }
1926 self._compare_ok(id_, expected, given=response.body)
1926 self._compare_ok(id_, expected, given=response.body)
1927 else:
1927 else:
1928 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
1928 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
1929 self._compare_error(id_, expected, given=response.body)
1929 self._compare_error(id_, expected, given=response.body)
1930
1930
1931 @mock.patch.object(RepoGroupModel, 'revoke_user_permission', crash)
1931 @mock.patch.object(RepoGroupModel, 'revoke_user_permission', crash)
1932 def test_api_revoke_user_permission_from_repo_group_exception_when_adding(self):
1932 def test_api_revoke_user_permission_from_repo_group_exception_when_adding(self):
1933 id_, params = _build_data(self.apikey,
1933 id_, params = _build_data(self.apikey,
1934 'revoke_user_permission_from_repo_group',
1934 'revoke_user_permission_from_repo_group',
1935 repogroupid=TEST_REPO_GROUP,
1935 repogroupid=TEST_REPO_GROUP,
1936 userid=TEST_USER_ADMIN_LOGIN, )
1936 userid=TEST_USER_ADMIN_LOGIN, )
1937 response = api_call(self, params)
1937 response = api_call(self, params)
1938
1938
1939 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
1939 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
1940 TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1940 TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
1941 )
1941 )
1942 self._compare_error(id_, expected, given=response.body)
1942 self._compare_error(id_, expected, given=response.body)
1943
1943
1944 @parameterized.expand([
1944 @parameterized.expand([
1945 ('none', 'group.none', 'none'),
1945 ('none', 'group.none', 'none'),
1946 ('read', 'group.read', 'none'),
1946 ('read', 'group.read', 'none'),
1947 ('write', 'group.write', 'none'),
1947 ('write', 'group.write', 'none'),
1948 ('admin', 'group.admin', 'none'),
1948 ('admin', 'group.admin', 'none'),
1949
1949
1950 ('none', 'group.none', 'all'),
1950 ('none', 'group.none', 'all'),
1951 ('read', 'group.read', 'all'),
1951 ('read', 'group.read', 'all'),
1952 ('write', 'group.write', 'all'),
1952 ('write', 'group.write', 'all'),
1953 ('admin', 'group.admin', 'all'),
1953 ('admin', 'group.admin', 'all'),
1954
1954
1955 ('none', 'group.none', 'repos'),
1955 ('none', 'group.none', 'repos'),
1956 ('read', 'group.read', 'repos'),
1956 ('read', 'group.read', 'repos'),
1957 ('write', 'group.write', 'repos'),
1957 ('write', 'group.write', 'repos'),
1958 ('admin', 'group.admin', 'repos'),
1958 ('admin', 'group.admin', 'repos'),
1959
1959
1960 ('none', 'group.none', 'groups'),
1960 ('none', 'group.none', 'groups'),
1961 ('read', 'group.read', 'groups'),
1961 ('read', 'group.read', 'groups'),
1962 ('write', 'group.write', 'groups'),
1962 ('write', 'group.write', 'groups'),
1963 ('admin', 'group.admin', 'groups'),
1963 ('admin', 'group.admin', 'groups'),
1964 ])
1964 ])
1965 def test_api_grant_user_group_permission_to_repo_group(self, name, perm, apply_to_children):
1965 def test_api_grant_user_group_permission_to_repo_group(self, name, perm, apply_to_children):
1966 id_, params = _build_data(self.apikey,
1966 id_, params = _build_data(self.apikey,
1967 'grant_user_group_permission_to_repo_group',
1967 'grant_user_group_permission_to_repo_group',
1968 repogroupid=TEST_REPO_GROUP,
1968 repogroupid=TEST_REPO_GROUP,
1969 usergroupid=TEST_USER_GROUP,
1969 usergroupid=TEST_USER_GROUP,
1970 perm=perm,
1970 perm=perm,
1971 apply_to_children=apply_to_children,)
1971 apply_to_children=apply_to_children,)
1972 response = api_call(self, params)
1972 response = api_call(self, params)
1973
1973
1974 ret = {
1974 ret = {
1975 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
1975 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
1976 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
1976 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
1977 ),
1977 ),
1978 'success': True
1978 'success': True
1979 }
1979 }
1980 expected = ret
1980 expected = ret
1981 self._compare_ok(id_, expected, given=response.body)
1981 self._compare_ok(id_, expected, given=response.body)
1982
1982
1983 @parameterized.expand([
1983 @parameterized.expand([
1984 ('none_fails', 'group.none', 'none', False, False),
1984 ('none_fails', 'group.none', 'none', False, False),
1985 ('read_fails', 'group.read', 'none', False, False),
1985 ('read_fails', 'group.read', 'none', False, False),
1986 ('write_fails', 'group.write', 'none', False, False),
1986 ('write_fails', 'group.write', 'none', False, False),
1987 ('admin_fails', 'group.admin', 'none', False, False),
1987 ('admin_fails', 'group.admin', 'none', False, False),
1988
1988
1989 # with granted perms
1989 # with granted perms
1990 ('none_ok', 'group.none', 'none', True, True),
1990 ('none_ok', 'group.none', 'none', True, True),
1991 ('read_ok', 'group.read', 'none', True, True),
1991 ('read_ok', 'group.read', 'none', True, True),
1992 ('write_ok', 'group.write', 'none', True, True),
1992 ('write_ok', 'group.write', 'none', True, True),
1993 ('admin_ok', 'group.admin', 'none', True, True),
1993 ('admin_ok', 'group.admin', 'none', True, True),
1994 ])
1994 ])
1995 def test_api_grant_user_group_permission_to_repo_group_by_regular_user(
1995 def test_api_grant_user_group_permission_to_repo_group_by_regular_user(
1996 self, name, perm, apply_to_children, grant_admin, access_ok):
1996 self, name, perm, apply_to_children, grant_admin, access_ok):
1997 if grant_admin:
1997 if grant_admin:
1998 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1998 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
1999 self.TEST_USER_LOGIN,
1999 self.TEST_USER_LOGIN,
2000 'group.admin')
2000 'group.admin')
2001 Session().commit()
2001 Session().commit()
2002
2002
2003 id_, params = _build_data(self.apikey_regular,
2003 id_, params = _build_data(self.apikey_regular,
2004 'grant_user_group_permission_to_repo_group',
2004 'grant_user_group_permission_to_repo_group',
2005 repogroupid=TEST_REPO_GROUP,
2005 repogroupid=TEST_REPO_GROUP,
2006 usergroupid=TEST_USER_GROUP,
2006 usergroupid=TEST_USER_GROUP,
2007 perm=perm,
2007 perm=perm,
2008 apply_to_children=apply_to_children,)
2008 apply_to_children=apply_to_children,)
2009 response = api_call(self, params)
2009 response = api_call(self, params)
2010 if access_ok:
2010 if access_ok:
2011 ret = {
2011 ret = {
2012 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2012 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2013 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
2013 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
2014 ),
2014 ),
2015 'success': True
2015 'success': True
2016 }
2016 }
2017 expected = ret
2017 expected = ret
2018 self._compare_ok(id_, expected, given=response.body)
2018 self._compare_ok(id_, expected, given=response.body)
2019 else:
2019 else:
2020 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
2020 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
2021 self._compare_error(id_, expected, given=response.body)
2021 self._compare_error(id_, expected, given=response.body)
2022
2022
2023 def test_api_grant_user_group_permission_to_repo_group_wrong_permission(self):
2023 def test_api_grant_user_group_permission_to_repo_group_wrong_permission(self):
2024 perm = 'haha.no.permission'
2024 perm = 'haha.no.permission'
2025 id_, params = _build_data(self.apikey,
2025 id_, params = _build_data(self.apikey,
2026 'grant_user_group_permission_to_repo_group',
2026 'grant_user_group_permission_to_repo_group',
2027 repogroupid=TEST_REPO_GROUP,
2027 repogroupid=TEST_REPO_GROUP,
2028 usergroupid=TEST_USER_GROUP,
2028 usergroupid=TEST_USER_GROUP,
2029 perm=perm)
2029 perm=perm)
2030 response = api_call(self, params)
2030 response = api_call(self, params)
2031
2031
2032 expected = 'permission `%s` does not exist' % perm
2032 expected = 'permission `%s` does not exist' % perm
2033 self._compare_error(id_, expected, given=response.body)
2033 self._compare_error(id_, expected, given=response.body)
2034
2034
2035 @mock.patch.object(RepoGroupModel, 'grant_user_group_permission', crash)
2035 @mock.patch.object(RepoGroupModel, 'grant_user_group_permission', crash)
2036 def test_api_grant_user_group_permission_exception_when_adding(self):
2036 def test_api_grant_user_group_permission_exception_when_adding(self):
2037 perm = 'group.read'
2037 perm = 'group.read'
2038 id_, params = _build_data(self.apikey,
2038 id_, params = _build_data(self.apikey,
2039 'grant_user_group_permission_to_repo_group',
2039 'grant_user_group_permission_to_repo_group',
2040 repogroupid=TEST_REPO_GROUP,
2040 repogroupid=TEST_REPO_GROUP,
2041 usergroupid=TEST_USER_GROUP,
2041 usergroupid=TEST_USER_GROUP,
2042 perm=perm)
2042 perm=perm)
2043 response = api_call(self, params)
2043 response = api_call(self, params)
2044
2044
2045 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
2045 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
2046 TEST_USER_GROUP, TEST_REPO_GROUP
2046 TEST_USER_GROUP, TEST_REPO_GROUP
2047 )
2047 )
2048 self._compare_error(id_, expected, given=response.body)
2048 self._compare_error(id_, expected, given=response.body)
2049
2049
2050 @parameterized.expand([
2050 @parameterized.expand([
2051 ('none', 'none'),
2051 ('none', 'none'),
2052 ('all', 'all'),
2052 ('all', 'all'),
2053 ('repos', 'repos'),
2053 ('repos', 'repos'),
2054 ('groups', 'groups'),
2054 ('groups', 'groups'),
2055 ])
2055 ])
2056 def test_api_revoke_user_group_permission_from_repo_group(self, name, apply_to_children):
2056 def test_api_revoke_user_group_permission_from_repo_group(self, name, apply_to_children):
2057 RepoGroupModel().grant_user_group_permission(repo_group=TEST_REPO_GROUP,
2057 RepoGroupModel().grant_user_group_permission(repo_group=TEST_REPO_GROUP,
2058 group_name=TEST_USER_GROUP,
2058 group_name=TEST_USER_GROUP,
2059 perm='group.read',)
2059 perm='group.read',)
2060 Session().commit()
2060 Session().commit()
2061 id_, params = _build_data(self.apikey,
2061 id_, params = _build_data(self.apikey,
2062 'revoke_user_group_permission_from_repo_group',
2062 'revoke_user_group_permission_from_repo_group',
2063 repogroupid=TEST_REPO_GROUP,
2063 repogroupid=TEST_REPO_GROUP,
2064 usergroupid=TEST_USER_GROUP,
2064 usergroupid=TEST_USER_GROUP,
2065 apply_to_children=apply_to_children,)
2065 apply_to_children=apply_to_children,)
2066 response = api_call(self, params)
2066 response = api_call(self, params)
2067
2067
2068 expected = {
2068 expected = {
2069 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2069 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2070 apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
2070 apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
2071 ),
2071 ),
2072 'success': True
2072 'success': True
2073 }
2073 }
2074 self._compare_ok(id_, expected, given=response.body)
2074 self._compare_ok(id_, expected, given=response.body)
2075
2075
2076 @parameterized.expand([
2076 @parameterized.expand([
2077 ('none', 'none', False, False),
2077 ('none', 'none', False, False),
2078 ('all', 'all', False, False),
2078 ('all', 'all', False, False),
2079 ('repos', 'repos', False, False),
2079 ('repos', 'repos', False, False),
2080 ('groups', 'groups', False, False),
2080 ('groups', 'groups', False, False),
2081
2081
2082 # after granting admin rights
2082 # after granting admin rights
2083 ('none', 'none', False, False),
2083 ('none', 'none', False, False),
2084 ('all', 'all', False, False),
2084 ('all', 'all', False, False),
2085 ('repos', 'repos', False, False),
2085 ('repos', 'repos', False, False),
2086 ('groups', 'groups', False, False),
2086 ('groups', 'groups', False, False),
2087 ])
2087 ])
2088 def test_api_revoke_user_group_permission_from_repo_group_by_regular_user(
2088 def test_api_revoke_user_group_permission_from_repo_group_by_regular_user(
2089 self, name, apply_to_children, grant_admin, access_ok):
2089 self, name, apply_to_children, grant_admin, access_ok):
2090 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
2090 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
2091 user=TEST_USER_ADMIN_LOGIN,
2091 user=TEST_USER_ADMIN_LOGIN,
2092 perm='group.read',)
2092 perm='group.read',)
2093 Session().commit()
2093 Session().commit()
2094
2094
2095 if grant_admin:
2095 if grant_admin:
2096 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
2096 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
2097 self.TEST_USER_LOGIN,
2097 self.TEST_USER_LOGIN,
2098 'group.admin')
2098 'group.admin')
2099 Session().commit()
2099 Session().commit()
2100
2100
2101 id_, params = _build_data(self.apikey_regular,
2101 id_, params = _build_data(self.apikey_regular,
2102 'revoke_user_group_permission_from_repo_group',
2102 'revoke_user_group_permission_from_repo_group',
2103 repogroupid=TEST_REPO_GROUP,
2103 repogroupid=TEST_REPO_GROUP,
2104 usergroupid=TEST_USER_GROUP,
2104 usergroupid=TEST_USER_GROUP,
2105 apply_to_children=apply_to_children,)
2105 apply_to_children=apply_to_children,)
2106 response = api_call(self, params)
2106 response = api_call(self, params)
2107 if access_ok:
2107 if access_ok:
2108 expected = {
2108 expected = {
2109 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2109 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
2110 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
2110 apply_to_children, TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
2111 ),
2111 ),
2112 'success': True
2112 'success': True
2113 }
2113 }
2114 self._compare_ok(id_, expected, given=response.body)
2114 self._compare_ok(id_, expected, given=response.body)
2115 else:
2115 else:
2116 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
2116 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
2117 self._compare_error(id_, expected, given=response.body)
2117 self._compare_error(id_, expected, given=response.body)
2118
2118
2119 @mock.patch.object(RepoGroupModel, 'revoke_user_group_permission', crash)
2119 @mock.patch.object(RepoGroupModel, 'revoke_user_group_permission', crash)
2120 def test_api_revoke_user_group_permission_from_repo_group_exception_when_adding(self):
2120 def test_api_revoke_user_group_permission_from_repo_group_exception_when_adding(self):
2121 id_, params = _build_data(self.apikey, 'revoke_user_group_permission_from_repo_group',
2121 id_, params = _build_data(self.apikey, 'revoke_user_group_permission_from_repo_group',
2122 repogroupid=TEST_REPO_GROUP,
2122 repogroupid=TEST_REPO_GROUP,
2123 usergroupid=TEST_USER_GROUP,)
2123 usergroupid=TEST_USER_GROUP,)
2124 response = api_call(self, params)
2124 response = api_call(self, params)
2125
2125
2126 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
2126 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
2127 TEST_USER_GROUP, TEST_REPO_GROUP
2127 TEST_USER_GROUP, TEST_REPO_GROUP
2128 )
2128 )
2129 self._compare_error(id_, expected, given=response.body)
2129 self._compare_error(id_, expected, given=response.body)
2130
2130
2131 def test_api_get_gist(self):
2131 def test_api_get_gist(self):
2132 gist = fixture.create_gist()
2132 gist = fixture.create_gist()
2133 gist_id = gist.gist_access_id
2133 gist_id = gist.gist_access_id
2134 gist_created_on = gist.created_on
2134 gist_created_on = gist.created_on
2135 id_, params = _build_data(self.apikey, 'get_gist',
2135 id_, params = _build_data(self.apikey, 'get_gist',
2136 gistid=gist_id, )
2136 gistid=gist_id, )
2137 response = api_call(self, params)
2137 response = api_call(self, params)
2138
2138
2139 expected = {
2139 expected = {
2140 'access_id': gist_id,
2140 'access_id': gist_id,
2141 'created_on': gist_created_on,
2141 'created_on': gist_created_on,
2142 'description': 'new-gist',
2142 'description': 'new-gist',
2143 'expires': -1.0,
2143 'expires': -1.0,
2144 'gist_id': int(gist_id),
2144 'gist_id': int(gist_id),
2145 'type': 'public',
2145 'type': 'public',
2146 'url': 'http://localhost:80/_admin/gists/%s' % gist_id
2146 'url': 'http://localhost:80/_admin/gists/%s' % gist_id
2147 }
2147 }
2148
2148
2149 self._compare_ok(id_, expected, given=response.body)
2149 self._compare_ok(id_, expected, given=response.body)
2150
2150
2151 def test_api_get_gist_that_does_not_exist(self):
2151 def test_api_get_gist_that_does_not_exist(self):
2152 id_, params = _build_data(self.apikey_regular, 'get_gist',
2152 id_, params = _build_data(self.apikey_regular, 'get_gist',
2153 gistid='12345', )
2153 gistid='12345', )
2154 response = api_call(self, params)
2154 response = api_call(self, params)
2155 expected = 'gist `%s` does not exist' % ('12345',)
2155 expected = 'gist `%s` does not exist' % ('12345',)
2156 self._compare_error(id_, expected, given=response.body)
2156 self._compare_error(id_, expected, given=response.body)
2157
2157
2158 def test_api_get_gist_private_gist_without_permission(self):
2158 def test_api_get_gist_private_gist_without_permission(self):
2159 gist = fixture.create_gist()
2159 gist = fixture.create_gist()
2160 gist_id = gist.gist_access_id
2160 gist_id = gist.gist_access_id
2161 gist_created_on = gist.created_on
2161 gist_created_on = gist.created_on
2162 id_, params = _build_data(self.apikey_regular, 'get_gist',
2162 id_, params = _build_data(self.apikey_regular, 'get_gist',
2163 gistid=gist_id, )
2163 gistid=gist_id, )
2164 response = api_call(self, params)
2164 response = api_call(self, params)
2165
2165
2166 expected = 'gist `%s` does not exist' % gist_id
2166 expected = 'gist `%s` does not exist' % gist_id
2167 self._compare_error(id_, expected, given=response.body)
2167 self._compare_error(id_, expected, given=response.body)
2168
2168
2169 def test_api_get_gists(self):
2169 def test_api_get_gists(self):
2170 fixture.create_gist()
2170 fixture.create_gist()
2171 fixture.create_gist()
2171 fixture.create_gist()
2172
2172
2173 id_, params = _build_data(self.apikey, 'get_gists')
2173 id_, params = _build_data(self.apikey, 'get_gists')
2174 response = api_call(self, params)
2174 response = api_call(self, params)
2175 expected = response.json
2175 expected = response.json
2176 self.assertEqual(len(response.json['result']), 2)
2176 self.assertEqual(len(response.json['result']), 2)
2177 #self._compare_ok(id_, expected, given=response.body)
2177 #self._compare_ok(id_, expected, given=response.body)
2178
2178
2179 def test_api_get_gists_regular_user(self):
2179 def test_api_get_gists_regular_user(self):
2180 # by admin
2180 # by admin
2181 fixture.create_gist()
2181 fixture.create_gist()
2182 fixture.create_gist()
2182 fixture.create_gist()
2183
2183
2184 # by reg user
2184 # by reg user
2185 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2185 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2186 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2186 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2187 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2187 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2188
2188
2189 id_, params = _build_data(self.apikey_regular, 'get_gists')
2189 id_, params = _build_data(self.apikey_regular, 'get_gists')
2190 response = api_call(self, params)
2190 response = api_call(self, params)
2191 expected = response.json
2191 expected = response.json
2192 self.assertEqual(len(response.json['result']), 3)
2192 self.assertEqual(len(response.json['result']), 3)
2193 #self._compare_ok(id_, expected, given=response.body)
2193 #self._compare_ok(id_, expected, given=response.body)
2194
2194
2195 def test_api_get_gists_only_for_regular_user(self):
2195 def test_api_get_gists_only_for_regular_user(self):
2196 # by admin
2196 # by admin
2197 fixture.create_gist()
2197 fixture.create_gist()
2198 fixture.create_gist()
2198 fixture.create_gist()
2199
2199
2200 # by reg user
2200 # by reg user
2201 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2201 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2202 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2202 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2203 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2203 fixture.create_gist(owner=self.TEST_USER_LOGIN)
2204
2204
2205 id_, params = _build_data(self.apikey, 'get_gists',
2205 id_, params = _build_data(self.apikey, 'get_gists',
2206 userid=self.TEST_USER_LOGIN)
2206 userid=self.TEST_USER_LOGIN)
2207 response = api_call(self, params)
2207 response = api_call(self, params)
2208 expected = response.json
2208 expected = response.json
2209 self.assertEqual(len(response.json['result']), 3)
2209 self.assertEqual(len(response.json['result']), 3)
2210 #self._compare_ok(id_, expected, given=response.body)
2210 #self._compare_ok(id_, expected, given=response.body)
2211
2211
2212 def test_api_get_gists_regular_user_with_different_userid(self):
2212 def test_api_get_gists_regular_user_with_different_userid(self):
2213 id_, params = _build_data(self.apikey_regular, 'get_gists',
2213 id_, params = _build_data(self.apikey_regular, 'get_gists',
2214 userid=TEST_USER_ADMIN_LOGIN)
2214 userid=TEST_USER_ADMIN_LOGIN)
2215 response = api_call(self, params)
2215 response = api_call(self, params)
2216 expected = 'userid is not the same as your user'
2216 expected = 'userid is not the same as your user'
2217 self._compare_error(id_, expected, given=response.body)
2217 self._compare_error(id_, expected, given=response.body)
2218
2218
2219 def test_api_create_gist(self):
2219 def test_api_create_gist(self):
2220 id_, params = _build_data(self.apikey_regular, 'create_gist',
2220 id_, params = _build_data(self.apikey_regular, 'create_gist',
2221 lifetime=10,
2221 lifetime=10,
2222 description='foobar-gist',
2222 description='foobar-gist',
2223 gist_type='public',
2223 gist_type='public',
2224 files={'foobar': {'content': 'foo'}})
2224 files={'foobar': {'content': 'foo'}})
2225 response = api_call(self, params)
2225 response = api_call(self, params)
2226 response_json = response.json
2226 response_json = response.json
2227 expected = {
2227 expected = {
2228 'gist': {
2228 'gist': {
2229 'access_id': response_json['result']['gist']['access_id'],
2229 'access_id': response_json['result']['gist']['access_id'],
2230 'created_on': response_json['result']['gist']['created_on'],
2230 'created_on': response_json['result']['gist']['created_on'],
2231 'description': 'foobar-gist',
2231 'description': 'foobar-gist',
2232 'expires': response_json['result']['gist']['expires'],
2232 'expires': response_json['result']['gist']['expires'],
2233 'gist_id': response_json['result']['gist']['gist_id'],
2233 'gist_id': response_json['result']['gist']['gist_id'],
2234 'type': 'public',
2234 'type': 'public',
2235 'url': response_json['result']['gist']['url']
2235 'url': response_json['result']['gist']['url']
2236 },
2236 },
2237 'msg': 'created new gist'
2237 'msg': 'created new gist'
2238 }
2238 }
2239 self._compare_ok(id_, expected, given=response.body)
2239 self._compare_ok(id_, expected, given=response.body)
2240
2240
2241 @mock.patch.object(GistModel, 'create', crash)
2241 @mock.patch.object(GistModel, 'create', crash)
2242 def test_api_create_gist_exception_occured(self):
2242 def test_api_create_gist_exception_occured(self):
2243 id_, params = _build_data(self.apikey_regular, 'create_gist',
2243 id_, params = _build_data(self.apikey_regular, 'create_gist',
2244 files={})
2244 files={})
2245 response = api_call(self, params)
2245 response = api_call(self, params)
2246 expected = 'failed to create gist'
2246 expected = 'failed to create gist'
2247 self._compare_error(id_, expected, given=response.body)
2247 self._compare_error(id_, expected, given=response.body)
2248
2248
2249 def test_api_delete_gist(self):
2249 def test_api_delete_gist(self):
2250 gist_id = fixture.create_gist().gist_access_id
2250 gist_id = fixture.create_gist().gist_access_id
2251 id_, params = _build_data(self.apikey, 'delete_gist',
2251 id_, params = _build_data(self.apikey, 'delete_gist',
2252 gistid=gist_id)
2252 gistid=gist_id)
2253 response = api_call(self, params)
2253 response = api_call(self, params)
2254 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
2254 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
2255 self._compare_ok(id_, expected, given=response.body)
2255 self._compare_ok(id_, expected, given=response.body)
2256
2256
2257 def test_api_delete_gist_regular_user(self):
2257 def test_api_delete_gist_regular_user(self):
2258 gist_id = fixture.create_gist(owner=self.TEST_USER_LOGIN).gist_access_id
2258 gist_id = fixture.create_gist(owner=self.TEST_USER_LOGIN).gist_access_id
2259 id_, params = _build_data(self.apikey_regular, 'delete_gist',
2259 id_, params = _build_data(self.apikey_regular, 'delete_gist',
2260 gistid=gist_id)
2260 gistid=gist_id)
2261 response = api_call(self, params)
2261 response = api_call(self, params)
2262 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
2262 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
2263 self._compare_ok(id_, expected, given=response.body)
2263 self._compare_ok(id_, expected, given=response.body)
2264
2264
2265 def test_api_delete_gist_regular_user_no_permission(self):
2265 def test_api_delete_gist_regular_user_no_permission(self):
2266 gist_id = fixture.create_gist().gist_access_id
2266 gist_id = fixture.create_gist().gist_access_id
2267 id_, params = _build_data(self.apikey_regular, 'delete_gist',
2267 id_, params = _build_data(self.apikey_regular, 'delete_gist',
2268 gistid=gist_id)
2268 gistid=gist_id)
2269 response = api_call(self, params)
2269 response = api_call(self, params)
2270 expected = 'gist `%s` does not exist' % (gist_id,)
2270 expected = 'gist `%s` does not exist' % (gist_id,)
2271 self._compare_error(id_, expected, given=response.body)
2271 self._compare_error(id_, expected, given=response.body)
2272
2272
2273 @mock.patch.object(GistModel, 'delete', crash)
2273 @mock.patch.object(GistModel, 'delete', crash)
2274 def test_api_delete_gist_exception_occured(self):
2274 def test_api_delete_gist_exception_occured(self):
2275 gist_id = fixture.create_gist().gist_access_id
2275 gist_id = fixture.create_gist().gist_access_id
2276 id_, params = _build_data(self.apikey, 'delete_gist',
2276 id_, params = _build_data(self.apikey, 'delete_gist',
2277 gistid=gist_id)
2277 gistid=gist_id)
2278 response = api_call(self, params)
2278 response = api_call(self, params)
2279 expected = 'failed to delete gist ID:%s' % (gist_id,)
2279 expected = 'failed to delete gist ID:%s' % (gist_id,)
2280 self._compare_error(id_, expected, given=response.body)
2280 self._compare_error(id_, expected, given=response.body)
2281
2281
2282 def test_api_get_ip(self):
2282 def test_api_get_ip(self):
2283 id_, params = _build_data(self.apikey, 'get_ip')
2283 id_, params = _build_data(self.apikey, 'get_ip')
2284 response = api_call(self, params)
2284 response = api_call(self, params)
2285 expected = {
2285 expected = {
2286 'server_ip_addr': '0.0.0.0',
2286 'server_ip_addr': '0.0.0.0',
2287 'user_ips': []
2287 'user_ips': []
2288 }
2288 }
2289 self._compare_ok(id_, expected, given=response.body)
2289 self._compare_ok(id_, expected, given=response.body)
2290
2290
2291 def test_api_get_server_info(self):
2291 def test_api_get_server_info(self):
2292 id_, params = _build_data(self.apikey, 'get_server_info')
2292 id_, params = _build_data(self.apikey, 'get_server_info')
2293 response = api_call(self, params)
2293 response = api_call(self, params)
2294 expected = Setting.get_server_info()
2294 expected = Setting.get_server_info()
2295 self._compare_ok(id_, expected, given=response.body)
2295 self._compare_ok(id_, expected, given=response.body)
@@ -1,2035 +1,2035 b''
1 user_log_id,user_id,username,repository_id,repository_name,user_ip,action,action_date
1 user_log_id,user_id,username,repository_id,repository_name,user_ip,action,action_date
2 40,11,bobbbb,7,Something,58.96.60.131,push:8ae497884817c13097315b1740f2dd4dc87146da,2012-06-20 06:24:58.397209
2 40,11,bobbbb,7,Something,58.96.60.131,push:8ae497884817c13097315b1740f2dd4dc87146da,2012-06-20 06:24:58.397209
3 41,3,demo,8,Test_Repo,"",started_following_repo,2012-06-20 09:28:05.148974
3 41,3,demo,8,Test_Repo,"",started_following_repo,2012-06-20 09:28:05.148974
4 42,3,demo,8,Test_Repo,"",user_created_repo,2012-06-20 09:28:05.16412
4 42,3,demo,8,Test_Repo,"",user_created_repo,2012-06-20 09:28:05.16412
5 43,3,demo,8,Test_Repo,"",push_local:ef71a9202c55,2012-06-20 10:55:45.001052
5 43,3,demo,8,Test_Repo,"",push_local:ef71a9202c55,2012-06-20 10:55:45.001052
6 44,3,demo,8,Test_Repo,"",push_local:38d49edbd7b2,2012-06-20 10:56:51.749613
6 44,3,demo,8,Test_Repo,"",push_local:38d49edbd7b2,2012-06-20 10:56:51.749613
7 45,3,demo,9,demo_repo,"",started_following_repo,2012-06-20 11:32:14.24928
7 45,3,demo,9,demo_repo,"",started_following_repo,2012-06-20 11:32:14.24928
8 46,3,demo,9,demo_repo,"",user_created_repo,2012-06-20 11:32:14.263506
8 46,3,demo,9,demo_repo,"",user_created_repo,2012-06-20 11:32:14.263506
9 47,3,demo,9,demo_repo,"",push_local:33ee55de14bc,2012-06-20 11:33:13.23204
9 47,3,demo,9,demo_repo,"",push_local:33ee55de14bc,2012-06-20 11:33:13.23204
10 48,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:46:47.218691
10 48,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:46:47.218691
11 49,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:48:09.634995
11 49,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:48:09.634995
12 50,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:55:14.751441
12 50,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 12:55:14.751441
13 51,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 13:21:12.623288
13 51,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 13:21:12.623288
14 56,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 15:12:46.55823
14 56,3,demo,9,demo_repo,130.225.93.59,pull,2012-06-20 15:12:46.55823
15 57,3,demo,12,rawr,"",started_following_repo,2012-06-20 17:16:42.947936
15 57,3,demo,12,rawr,"",started_following_repo,2012-06-20 17:16:42.947936
16 58,3,demo,12,rawr,"",user_created_repo,2012-06-20 17:16:42.962133
16 58,3,demo,12,rawr,"",user_created_repo,2012-06-20 17:16:42.962133
17 59,3,demo,12,rawr,"",stopped_following_repo,2012-06-20 17:17:12.759495
17 59,3,demo,12,rawr,"",stopped_following_repo,2012-06-20 17:17:12.759495
18 60,3,demo,12,rawr,"",started_following_repo,2012-06-20 17:17:28.877751
18 60,3,demo,12,rawr,"",started_following_repo,2012-06-20 17:17:28.877751
19 62,3,demo,12,rawr,"",user_forked_repo:fork-rawr,2012-06-20 17:17:48.439005
19 62,3,demo,12,rawr,"",user_forked_repo:fork-rawr,2012-06-20 17:17:48.439005
20 64,3,demo,14,fork-demo_repo-cubed,"",started_following_repo,2012-06-20 18:54:02.751941
20 64,3,demo,14,fork-demo_repo-cubed,"",started_following_repo,2012-06-20 18:54:02.751941
21 65,3,demo,9,demo_repo,"",user_forked_repo:fork-demo_repo-cubed,2012-06-20 18:54:02.767968
21 65,3,demo,9,demo_repo,"",user_forked_repo:fork-demo_repo-cubed,2012-06-20 18:54:02.767968
22 66,3,demo,14,fork-demo_repo-cubed,"",user_created_fork:fork-demo_repo-cubed,2012-06-20 18:54:02.777189
22 66,3,demo,14,fork-demo_repo-cubed,"",user_created_fork:fork-demo_repo-cubed,2012-06-20 18:54:02.777189
23 67,1,default,4,fork-fork-test,194.105.98.146,pull,2012-06-20 21:53:57.018888
23 67,1,default,4,fork-fork-test,194.105.98.146,pull,2012-06-20 21:53:57.018888
24 68,1,default,7,Something,54.247.183.89,pull,2012-06-21 01:11:19.524998
24 68,1,default,7,Something,54.247.183.89,pull,2012-06-21 01:11:19.524998
25 69,3,demo,15,wibblewobble,"",started_following_repo,2012-06-21 10:21:31.937511
25 69,3,demo,15,wibblewobble,"",started_following_repo,2012-06-21 10:21:31.937511
26 70,3,demo,15,wibblewobble,"",user_created_repo,2012-06-21 10:21:31.952874
26 70,3,demo,15,wibblewobble,"",user_created_repo,2012-06-21 10:21:31.952874
27 71,3,demo,15,wibblewobble,"",push_local:c1953b3f4981,2012-06-21 10:23:05.881392
27 71,3,demo,15,wibblewobble,"",push_local:c1953b3f4981,2012-06-21 10:23:05.881392
28 72,3,demo,8,Test_Repo,"",user_commented_revision:38d49edbd7b2599acf9ef40198d9107616c1faea,2012-06-21 21:11:46.159601
28 72,3,demo,8,Test_Repo,"",user_commented_revision:38d49edbd7b2599acf9ef40198d9107616c1faea,2012-06-21 21:11:46.159601
29 73,3,demo,8,Test_Repo,"",push_local:1b6b9ca4d1e2,2012-06-21 21:13:03.715136
29 73,3,demo,8,Test_Repo,"",push_local:1b6b9ca4d1e2,2012-06-21 21:13:03.715136
30 74,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-21 21:13:32.771404
30 74,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-21 21:13:32.771404
31 75,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-21 21:13:58.118806
31 75,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-21 21:13:58.118806
32 76,1,default,4,fork-fork-test,98.215.125.44,pull,2012-06-22 09:04:39.8341
32 76,1,default,4,fork-fork-test,98.215.125.44,pull,2012-06-22 09:04:39.8341
33 77,1,default,1,test,98.215.125.44,pull,2012-06-22 09:06:34.310867
33 77,1,default,1,test,98.215.125.44,pull,2012-06-22 09:06:34.310867
34 78,3,demo,16,My-Demo-Test,"",started_following_repo,2012-06-22 09:24:25.528203
34 78,3,demo,16,My-Demo-Test,"",started_following_repo,2012-06-22 09:24:25.528203
35 79,3,demo,16,My-Demo-Test,"",user_created_repo,2012-06-22 09:24:25.544844
35 79,3,demo,16,My-Demo-Test,"",user_created_repo,2012-06-22 09:24:25.544844
36 80,3,demo,16,My-Demo-Test,"",push_local:c011a9245a0a,2012-06-22 09:25:51.981168
36 80,3,demo,16,My-Demo-Test,"",push_local:c011a9245a0a,2012-06-22 09:25:51.981168
37 81,3,demo,17,fork-test1,"",started_following_repo,2012-06-22 12:45:00.782089
37 81,3,demo,17,fork-test1,"",started_following_repo,2012-06-22 12:45:00.782089
38 82,3,demo,7,Something,"",user_forked_repo:fork-test1,2012-06-22 12:45:00.874723
38 82,3,demo,7,Something,"",user_forked_repo:fork-test1,2012-06-22 12:45:00.874723
39 83,3,demo,17,fork-test1,"",user_created_fork:fork-test1,2012-06-22 12:45:00.888746
39 83,3,demo,17,fork-test1,"",user_created_fork:fork-test1,2012-06-22 12:45:00.888746
40 84,1,default,17,fork-test1,193.111.227.10,pull,2012-06-22 12:46:05.626038
40 84,1,default,17,fork-test1,193.111.227.10,pull,2012-06-22 12:46:05.626038
41 85,3,demo,17,fork-test1,"",push_local:fbba7ec0a373,2012-06-22 12:47:02.869839
41 85,3,demo,17,fork-test1,"",push_local:fbba7ec0a373,2012-06-22 12:47:02.869839
42 86,3,demo,,testuser,"",started_following_repo,2012-06-22 13:07:21.784074
42 86,3,demo,,testuser,"",started_following_repo,2012-06-22 13:07:21.784074
43 87,3,demo,,testuser,"",user_created_repo,2012-06-22 13:07:21.797918
43 87,3,demo,,testuser,"",user_created_repo,2012-06-22 13:07:21.797918
44 52,12,asddsaasd,,asdasd,"",started_following_repo,2012-06-20 13:29:33.432553
44 52,12,asddsaasd,,asdasd,"",started_following_repo,2012-06-20 13:29:33.432553
45 53,12,asddsaasd,,asdasd,"",user_created_repo,2012-06-20 13:29:33.443905
45 53,12,asddsaasd,,asdasd,"",user_created_repo,2012-06-20 13:29:33.443905
46 54,3,demo,,foo-bar,"",started_following_repo,2012-06-20 13:41:00.903917
46 54,3,demo,,foo-bar,"",started_following_repo,2012-06-20 13:41:00.903917
47 55,3,demo,,foo-bar,"",user_created_repo,2012-06-20 13:41:00.919042
47 55,3,demo,,foo-bar,"",user_created_repo,2012-06-20 13:41:00.919042
48 61,3,demo,,fork-rawr,"",started_following_repo,2012-06-20 17:17:48.419615
48 61,3,demo,,fork-rawr,"",started_following_repo,2012-06-20 17:17:48.419615
49 63,3,demo,,fork-rawr,"",user_created_fork:fork-rawr,2012-06-20 17:17:48.45108
49 63,3,demo,,fork-rawr,"",user_created_fork:fork-rawr,2012-06-20 17:17:48.45108
50 88,3,demo,,testuser,"",user_deleted_repo,2012-06-22 13:08:17.608089
50 88,3,demo,,testuser,"",user_deleted_repo,2012-06-22 13:08:17.608089
51 89,3,demo,8,Test_Repo,"",stopped_following_repo,2012-06-22 13:09:37.992254
51 89,3,demo,8,Test_Repo,"",stopped_following_repo,2012-06-22 13:09:37.992254
52 90,3,demo,8,Test_Repo,"",started_following_repo,2012-06-22 13:09:39.613543
52 90,3,demo,8,Test_Repo,"",started_following_repo,2012-06-22 13:09:39.613543
53 91,3,demo,8,Test_Repo,"",stopped_following_repo,2012-06-22 13:09:41.493402
53 91,3,demo,8,Test_Repo,"",stopped_following_repo,2012-06-22 13:09:41.493402
54 92,3,demo,19,testmaster,"",started_following_repo,2012-06-22 13:10:21.695641
54 92,3,demo,19,testmaster,"",started_following_repo,2012-06-22 13:10:21.695641
55 93,3,demo,19,testmaster,"",user_created_repo,2012-06-22 13:10:21.708814
55 93,3,demo,19,testmaster,"",user_created_repo,2012-06-22 13:10:21.708814
56 96,3,demo,19,testmaster,"",push_local:b33786b10a28,2012-06-22 13:15:36.222686
56 96,3,demo,19,testmaster,"",push_local:b33786b10a28,2012-06-22 13:15:36.222686
57 104,3,demo,24,fork-Something,"",started_following_repo,2012-06-25 18:03:33.068935
57 104,3,demo,24,fork-Something,"",started_following_repo,2012-06-25 18:03:33.068935
58 105,3,demo,7,Something,"",user_forked_repo:fork-Something,2012-06-25 18:03:33.13689
58 105,3,demo,7,Something,"",user_forked_repo:fork-Something,2012-06-25 18:03:33.13689
59 106,3,demo,24,fork-Something,"",user_created_fork:fork-Something,2012-06-25 18:03:33.149499
59 106,3,demo,24,fork-Something,"",user_created_fork:fork-Something,2012-06-25 18:03:33.149499
60 107,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-25 18:04:15.229245
60 107,3,demo,8,Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-06-25 18:04:15.229245
61 108,15,Vipous,25,My1,"",started_following_repo,2012-06-25 22:03:18.626137
61 108,15,Vipous,25,My1,"",started_following_repo,2012-06-25 22:03:18.626137
62 109,15,Vipous,25,My1,"",user_created_repo,2012-06-25 22:03:18.64231
62 109,15,Vipous,25,My1,"",user_created_repo,2012-06-25 22:03:18.64231
63 110,15,Vipous,25,My1,"",push_local:7de476a79614,2012-06-25 22:03:56.832111
63 110,15,Vipous,25,My1,"",push_local:7de476a79614,2012-06-25 22:03:56.832111
64 111,3,demo,26,test12,"",started_following_repo,2012-06-26 04:49:54.757548
64 111,3,demo,26,test12,"",started_following_repo,2012-06-26 04:49:54.757548
65 112,3,demo,26,test12,"",user_created_repo,2012-06-26 04:49:54.772195
65 112,3,demo,26,test12,"",user_created_repo,2012-06-26 04:49:54.772195
66 113,1,default,26,test12,119.75.53.154,pull,2012-06-26 04:50:18.237028
66 113,1,default,26,test12,119.75.53.154,pull,2012-06-26 04:50:18.237028
67 114,3,demo,26,test12,119.75.53.154,push:50bafc0269a534dd41937214d0b35a43f65d8251,2012-06-26 04:51:04.26479
67 114,3,demo,26,test12,119.75.53.154,push:50bafc0269a534dd41937214d0b35a43f65d8251,2012-06-26 04:51:04.26479
68 115,17,pribeiro,,sync,"",started_following_repo,2012-06-26 11:11:45.473209
68 115,17,pribeiro,,sync,"",started_following_repo,2012-06-26 11:11:45.473209
69 116,17,pribeiro,,sync,"",user_created_repo,2012-06-26 11:11:45.487411
69 116,17,pribeiro,,sync,"",user_created_repo,2012-06-26 11:11:45.487411
70 117,17,pribeiro,,sync,"",user_deleted_repo,2012-06-26 11:13:46.254567
70 117,17,pribeiro,,sync,"",user_deleted_repo,2012-06-26 11:13:46.254567
71 118,18,admin_xanroot,28,new_repo,"",started_following_repo,2012-06-26 14:39:12.939952
71 118,18,admin_xanroot,28,new_repo,"",started_following_repo,2012-06-26 14:39:12.939952
72 119,18,admin_xanroot,28,new_repo,"",user_created_repo,2012-06-26 14:39:12.954647
72 119,18,admin_xanroot,28,new_repo,"",user_created_repo,2012-06-26 14:39:12.954647
73 120,2,admin,29,otro-test,"",started_following_repo,2012-06-26 19:44:05.282141
73 120,2,admin,29,otro-test,"",started_following_repo,2012-06-26 19:44:05.282141
74 121,2,admin,29,otro-test,"",admin_created_repo,2012-06-26 19:44:05.29657
74 121,2,admin,29,otro-test,"",admin_created_repo,2012-06-26 19:44:05.29657
75 122,2,admin,29,otro-test,"",admin_updated_repo,2012-06-26 19:44:47.598164
75 122,2,admin,29,otro-test,"",admin_updated_repo,2012-06-26 19:44:47.598164
76 123,1,default,29,otro-test,190.84.240.187,push:aeb60b7e53696fa8deaaf4881cf02cdbf4698bbc,2012-06-26 19:47:33.677685
76 123,1,default,29,otro-test,190.84.240.187,push:aeb60b7e53696fa8deaaf4881cf02cdbf4698bbc,2012-06-26 19:47:33.677685
77 124,22,sven-teichmann,30,Test,"",started_following_repo,2012-06-27 12:07:55.455967
77 124,22,sven-teichmann,30,Test,"",started_following_repo,2012-06-27 12:07:55.455967
78 125,22,sven-teichmann,30,Test,"",user_created_repo,2012-06-27 12:07:55.471798
78 125,22,sven-teichmann,30,Test,"",user_created_repo,2012-06-27 12:07:55.471798
79 126,3,demo,31,fork-new_repo,"",started_following_repo,2012-06-27 16:22:20.091073
79 126,3,demo,31,fork-new_repo,"",started_following_repo,2012-06-27 16:22:20.091073
80 127,3,demo,28,new_repo,"",user_forked_repo:fork-new_repo,2012-06-27 16:22:20.104674
80 127,3,demo,28,new_repo,"",user_forked_repo:fork-new_repo,2012-06-27 16:22:20.104674
81 128,3,demo,31,fork-new_repo,"",user_created_fork:fork-new_repo,2012-06-27 16:22:20.11418
81 128,3,demo,31,fork-new_repo,"",user_created_fork:fork-new_repo,2012-06-27 16:22:20.11418
82 129,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:37:55.369402
82 129,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:37:55.369402
83 130,3,demo,32,big-project,"",user_created_repo,2012-06-27 16:37:55.383717
83 130,3,demo,32,big-project,"",user_created_repo,2012-06-27 16:37:55.383717
84 131,3,demo,32,big-project,195.238.92.121,push:5645e36ef4c9dbdd31709f1d234df008a8a8ce8c,2012-06-27 16:39:07.148939
84 131,3,demo,32,big-project,195.238.92.121,push:5645e36ef4c9dbdd31709f1d234df008a8a8ce8c,2012-06-27 16:39:07.148939
85 132,3,demo,32,big-project,195.238.92.121,push:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:39:45.482592
85 132,3,demo,32,big-project,195.238.92.121,push:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:39:45.482592
86 133,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:42:21.533609
86 133,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:42:21.533609
87 134,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:42:48.278721
87 134,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-06-27 16:42:48.278721
88 135,3,demo,32,big-project,"",stopped_following_repo,2012-06-27 16:46:16.105454
88 135,3,demo,32,big-project,"",stopped_following_repo,2012-06-27 16:46:16.105454
89 136,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:46:17.496644
89 136,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:46:17.496644
90 137,3,demo,32,big-project,"",stopped_following_repo,2012-06-27 16:46:19.299402
90 137,3,demo,32,big-project,"",stopped_following_repo,2012-06-27 16:46:19.299402
91 138,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:46:20.235067
91 138,3,demo,32,big-project,"",started_following_repo,2012-06-27 16:46:20.235067
92 139,3,demo,32,big-project,"",user_commented_pull_request:3,2012-06-27 17:25:45.106764
92 139,3,demo,32,big-project,"",user_commented_pull_request:3,2012-06-27 17:25:45.106764
93 140,3,demo,33,fork-big-project,"",started_following_repo,2012-06-27 17:30:03.65222
93 140,3,demo,33,fork-big-project,"",started_following_repo,2012-06-27 17:30:03.65222
94 141,3,demo,32,big-project,"",user_forked_repo:fork-big-project,2012-06-27 17:30:03.666404
94 141,3,demo,32,big-project,"",user_forked_repo:fork-big-project,2012-06-27 17:30:03.666404
95 142,3,demo,33,fork-big-project,"",user_created_fork:fork-big-project,2012-06-27 17:30:03.676956
95 142,3,demo,33,fork-big-project,"",user_created_fork:fork-big-project,2012-06-27 17:30:03.676956
96 143,3,demo,34,a,"",started_following_repo,2012-06-27 17:38:09.019648
96 143,3,demo,34,a,"",started_following_repo,2012-06-27 17:38:09.019648
97 144,3,demo,34,a,"",user_created_repo,2012-06-27 17:38:09.0339
97 144,3,demo,34,a,"",user_created_repo,2012-06-27 17:38:09.0339
98 145,3,demo,35,fork-Something22,"",started_following_repo,2012-06-28 11:00:39.678572
98 145,3,demo,35,fork-Something22,"",started_following_repo,2012-06-28 11:00:39.678572
99 146,3,demo,7,Something,"",user_forked_repo:fork-Something22,2012-06-28 11:00:39.737584
99 146,3,demo,7,Something,"",user_forked_repo:fork-Something22,2012-06-28 11:00:39.737584
100 147,3,demo,35,fork-Something22,"",user_created_fork:fork-Something22,2012-06-28 11:00:39.754509
100 147,3,demo,35,fork-Something22,"",user_created_fork:fork-Something22,2012-06-28 11:00:39.754509
101 148,3,demo,36,bootstrap,"",started_following_repo,2012-06-29 08:21:06.920203
101 148,3,demo,36,bootstrap,"",started_following_repo,2012-06-29 08:21:06.920203
102 149,3,demo,36,bootstrap,"",user_created_repo,2012-06-29 08:21:06.932926
102 149,3,demo,36,bootstrap,"",user_created_repo,2012-06-29 08:21:06.932926
103 150,18,admin_xanroot,28,new_repo,"",stopped_following_repo,2012-06-29 13:24:05.476554
103 150,18,admin_xanroot,28,new_repo,"",stopped_following_repo,2012-06-29 13:24:05.476554
104 151,18,admin_xanroot,28,new_repo,"",started_following_repo,2012-06-29 13:24:07.796049
104 151,18,admin_xanroot,28,new_repo,"",started_following_repo,2012-06-29 13:24:07.796049
105 152,18,admin_xanroot,37,ааввя,"",started_following_repo,2012-06-29 14:29:18.52356
105 152,18,admin_xanroot,37,ааввя,"",started_following_repo,2012-06-29 14:29:18.52356
106 153,18,admin_xanroot,37,ааввя,"",user_created_repo,2012-06-29 14:29:18.536725
106 153,18,admin_xanroot,37,ааввя,"",user_created_repo,2012-06-29 14:29:18.536725
107 154,2,admin,38,code-review-test,"",started_following_repo,2012-06-29 14:51:32.715801
107 154,2,admin,38,code-review-test,"",started_following_repo,2012-06-29 14:51:32.715801
108 155,2,admin,38,code-review-test,"",admin_created_repo,2012-06-29 14:51:32.730258
108 155,2,admin,38,code-review-test,"",admin_created_repo,2012-06-29 14:51:32.730258
109 156,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:54:59.436222
109 156,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:54:59.436222
110 157,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:14.228553
110 157,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:14.228553
111 158,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:22.443143
111 158,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:22.443143
112 159,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:37.609157
112 159,2,admin,1,test,"",user_commented_pull_request:1,2012-06-29 14:55:37.609157
113 160,2,admin,3,fork-test,"",user_commented_revision:8af86cb62c34b04cf2b1e3c9fcd2aa19e2e79caa,2012-06-29 14:56:01.991353
113 160,2,admin,3,fork-test,"",user_commented_revision:8af86cb62c34b04cf2b1e3c9fcd2aa19e2e79caa,2012-06-29 14:56:01.991353
114 161,1,default,38,code-review-test,62.116.219.97,pull,2012-06-29 14:57:31.272853
114 161,1,default,38,code-review-test,62.116.219.97,pull,2012-06-29 14:57:31.272853
115 162,2,admin,39,fork-code-review-test,"",started_following_repo,2012-06-29 15:03:28.825569
115 162,2,admin,39,fork-code-review-test,"",started_following_repo,2012-06-29 15:03:28.825569
116 163,2,admin,38,code-review-test,"",user_forked_repo:fork-code-review-test,2012-06-29 15:03:28.875867
116 163,2,admin,38,code-review-test,"",user_forked_repo:fork-code-review-test,2012-06-29 15:03:28.875867
117 164,2,admin,39,fork-code-review-test,"",user_created_fork:fork-code-review-test,2012-06-29 15:03:28.883669
117 164,2,admin,39,fork-code-review-test,"",user_created_fork:fork-code-review-test,2012-06-29 15:03:28.883669
118 165,2,admin,39,fork-code-review-test,62.116.219.97,push:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-06-29 15:03:44.690869
118 165,2,admin,39,fork-code-review-test,62.116.219.97,push:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-06-29 15:03:44.690869
119 166,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:07:50.753441
119 166,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:07:50.753441
120 167,2,admin,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-06-29 15:08:06.700958
120 167,2,admin,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-06-29 15:08:06.700958
121 168,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:08:20.290949
121 168,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:08:20.290949
122 169,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:08:43.746906
122 169,2,admin,38,code-review-test,"",user_commented_pull_request:5,2012-06-29 15:08:43.746906
123 170,3,demo,40,group/fork-a,"",started_following_repo,2012-07-01 18:28:49.022357
123 170,3,demo,40,group/fork-a,"",started_following_repo,2012-07-01 18:28:49.022357
124 171,3,demo,34,a,"",user_forked_repo:group/fork-a,2012-07-01 18:28:49.039621
124 171,3,demo,34,a,"",user_forked_repo:group/fork-a,2012-07-01 18:28:49.039621
125 172,3,demo,40,group/fork-a,"",user_created_fork:group/fork-a,2012-07-01 18:28:49.050748
125 172,3,demo,40,group/fork-a,"",user_created_fork:group/fork-a,2012-07-01 18:28:49.050748
126 173,3,demo,16,My-Demo-Test,"",push_local:5ac30fe040bd,2012-07-02 17:29:26.91197
126 173,3,demo,16,My-Demo-Test,"",push_local:5ac30fe040bd,2012-07-02 17:29:26.91197
127 174,1,default,36,bootstrap,78.53.1.77,pull,2012-07-02 19:33:15.148459
127 174,1,default,36,bootstrap,78.53.1.77,pull,2012-07-02 19:33:15.148459
128 175,2,admin,,asdasd,"",admin_deleted_repo,2012-07-03 00:54:27.51389
128 175,2,admin,,asdasd,"",admin_deleted_repo,2012-07-03 00:54:27.51389
129 94,3,demo,,testclone,"",started_following_repo,2012-06-22 13:10:54.479092
129 94,3,demo,,testclone,"",started_following_repo,2012-06-22 13:10:54.479092
130 101,14,rune,,fork-rune-test,"",started_following_repo,2012-06-25 15:06:20.402391
130 101,14,rune,,fork-rune-test,"",started_following_repo,2012-06-25 15:06:20.402391
131 97,3,demo,,dummy,"",started_following_repo,2012-06-25 00:12:56.20161
131 97,3,demo,,dummy,"",started_following_repo,2012-06-25 00:12:56.20161
132 98,3,demo,,dummy,"",user_created_repo,2012-06-25 00:12:56.210618
132 98,3,demo,,dummy,"",user_created_repo,2012-06-25 00:12:56.210618
133 99,14,rune,,rune-test,"",started_following_repo,2012-06-25 15:05:18.894561
133 99,14,rune,,rune-test,"",started_following_repo,2012-06-25 15:05:18.894561
134 100,14,rune,,rune-test,"",user_created_repo,2012-06-25 15:05:18.908953
134 100,14,rune,,rune-test,"",user_created_repo,2012-06-25 15:05:18.908953
135 102,14,rune,,rune-test,"",user_forked_repo:fork-rune-test,2012-06-25 15:06:20.418213
135 102,14,rune,,rune-test,"",user_forked_repo:fork-rune-test,2012-06-25 15:06:20.418213
136 237,1,default,36,bootstrap,92.229.108.18,pull,2012-07-11 23:16:28.235183
136 237,1,default,36,bootstrap,92.229.108.18,pull,2012-07-11 23:16:28.235183
137 95,3,demo,,testclone,"",user_created_repo,2012-06-22 13:10:54.492868
137 95,3,demo,,testclone,"",user_created_repo,2012-06-22 13:10:54.492868
138 177,2,admin,,testclone,"",admin_deleted_repo,2012-07-03 00:54:44.781032
138 177,2,admin,,testclone,"",admin_deleted_repo,2012-07-03 00:54:44.781032
139 103,14,rune,,fork-rune-test,"",user_created_fork:fork-rune-test,2012-06-25 15:06:20.429444
139 103,14,rune,,fork-rune-test,"",user_created_fork:fork-rune-test,2012-06-25 15:06:20.429444
140 178,2,admin,,fork-rune-test,"",admin_deleted_repo,2012-07-03 00:54:53.395495
140 178,2,admin,,fork-rune-test,"",admin_deleted_repo,2012-07-03 00:54:53.395495
141 179,2,admin,,dummy,"",admin_deleted_repo,2012-07-03 00:54:56.740108
141 179,2,admin,,dummy,"",admin_deleted_repo,2012-07-03 00:54:56.740108
142 180,2,admin,,foo-bar,"",admin_deleted_repo,2012-07-03 00:54:59.755216
142 180,2,admin,,foo-bar,"",admin_deleted_repo,2012-07-03 00:54:59.755216
143 238,40,cowwoc,54,glib,"",started_following_repo,2012-07-12 00:09:07.867216
143 238,40,cowwoc,54,glib,"",started_following_repo,2012-07-12 00:09:07.867216
144 182,15,Vipous,25,My1,"",push_local:96546c4c668d,2012-07-03 22:52:15.186673
144 182,15,Vipous,25,My1,"",push_local:96546c4c668d,2012-07-03 22:52:15.186673
145 183,15,Vipous,25,My1,"",push_local:f650cc084095,2012-07-03 22:53:20.761064
145 183,15,Vipous,25,My1,"",push_local:f650cc084095,2012-07-03 22:53:20.761064
146 184,15,Vipous,25,My1,"",push_local:e55af939aaf5,2012-07-03 22:54:18.480735
146 184,15,Vipous,25,My1,"",push_local:e55af939aaf5,2012-07-03 22:54:18.480735
147 185,28,razpdx,38,code-review-test,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-07-04 08:10:08.771284
147 185,28,razpdx,38,code-review-test,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-07-04 08:10:08.771284
148 186,28,razpdx,41,fork-code-review-test1111111,"",started_following_repo,2012-07-04 08:11:23.633652
148 186,28,razpdx,41,fork-code-review-test1111111,"",started_following_repo,2012-07-04 08:11:23.633652
149 187,28,razpdx,38,code-review-test,"",user_forked_repo:fork-code-review-test1111111,2012-07-04 08:11:25.10245
149 187,28,razpdx,38,code-review-test,"",user_forked_repo:fork-code-review-test1111111,2012-07-04 08:11:25.10245
150 188,28,razpdx,41,fork-code-review-test1111111,"",user_created_fork:fork-code-review-test1111111,2012-07-04 08:11:25.110291
150 188,28,razpdx,41,fork-code-review-test1111111,"",user_created_fork:fork-code-review-test1111111,2012-07-04 08:11:25.110291
151 189,3,demo,43,bar,"",started_following_repo,2012-07-05 14:37:38.394712
151 189,3,demo,43,bar,"",started_following_repo,2012-07-05 14:37:38.394712
152 190,3,demo,43,bar,"",user_created_repo,2012-07-05 14:37:38.404527
152 190,3,demo,43,bar,"",user_created_repo,2012-07-05 14:37:38.404527
153 191,3,demo,42,foo,"",started_following_repo,2012-07-05 14:38:19.351357
153 191,3,demo,42,foo,"",started_following_repo,2012-07-05 14:38:19.351357
154 192,3,demo,42,foo,"",user_created_repo,2012-07-05 14:38:19.367056
154 192,3,demo,42,foo,"",user_created_repo,2012-07-05 14:38:19.367056
155 193,3,demo,9,demo_repo,"",push_local:14fcc9365f2a,2012-07-05 22:53:20.216762
155 193,3,demo,9,demo_repo,"",push_local:14fcc9365f2a,2012-07-05 22:53:20.216762
156 194,31,jtiai,44,diff-test,"",started_following_repo,2012-07-06 11:23:24.475194
156 194,31,jtiai,44,diff-test,"",started_following_repo,2012-07-06 11:23:24.475194
157 195,31,jtiai,44,diff-test,"",user_created_repo,2012-07-06 11:23:24.491639
157 195,31,jtiai,44,diff-test,"",user_created_repo,2012-07-06 11:23:24.491639
158 196,31,jtiai,44,diff-test,62.240.70.253,push:bca174fa48db2eb05db5bd4532191dac269e97b2,2012-07-06 11:25:02.929509
158 196,31,jtiai,44,diff-test,62.240.70.253,push:bca174fa48db2eb05db5bd4532191dac269e97b2,2012-07-06 11:25:02.929509
159 197,31,jtiai,44,diff-test,62.240.70.253,push:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-06 11:26:14.260627
159 197,31,jtiai,44,diff-test,62.240.70.253,push:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-06 11:26:14.260627
160 198,2,admin,44,diff-test,"",admin_updated_repo,2012-07-06 19:57:44.363539
160 198,2,admin,44,diff-test,"",admin_updated_repo,2012-07-06 19:57:44.363539
161 199,2,admin,44,diff-test,"",admin_updated_repo,2012-07-06 19:57:48.132041
161 199,2,admin,44,diff-test,"",admin_updated_repo,2012-07-06 19:57:48.132041
162 200,1,default,44,diff-test,78.53.7.202,pull,2012-07-06 19:58:55.97104
162 200,1,default,44,diff-test,78.53.7.202,pull,2012-07-06 19:58:55.97104
163 201,32,shabutora,45,group/fork-bootstrap,"",started_following_repo,2012-07-07 07:28:38.272328
163 201,32,shabutora,45,group/fork-bootstrap,"",started_following_repo,2012-07-07 07:28:38.272328
164 202,32,shabutora,36,bootstrap,"",user_forked_repo:group/fork-bootstrap,2012-07-07 07:28:39.509986
164 202,32,shabutora,36,bootstrap,"",user_forked_repo:group/fork-bootstrap,2012-07-07 07:28:39.509986
165 203,32,shabutora,45,group/fork-bootstrap,"",user_created_fork:group/fork-bootstrap,2012-07-07 07:28:39.523403
165 203,32,shabutora,45,group/fork-bootstrap,"",user_created_fork:group/fork-bootstrap,2012-07-07 07:28:39.523403
166 206,3,demo,,GitRepoTest,"",started_following_repo,2012-07-09 15:19:28.134838
166 206,3,demo,,GitRepoTest,"",started_following_repo,2012-07-09 15:19:28.134838
167 207,3,demo,,GitRepoTest,"",user_created_repo,2012-07-09 15:19:28.145858
167 207,3,demo,,GitRepoTest,"",user_created_repo,2012-07-09 15:19:28.145858
168 208,3,demo,,GitRepoTest,"",push_local:5caba17c3e28,2012-07-09 15:19:59.181736
168 208,3,demo,,GitRepoTest,"",push_local:5caba17c3e28,2012-07-09 15:19:59.181736
169 209,3,demo,,GitRepoTest,"",user_deleted_repo,2012-07-09 15:22:02.989814
169 209,3,demo,,GitRepoTest,"",user_deleted_repo,2012-07-09 15:22:02.989814
170 210,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:43:51.82571
170 210,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:43:51.82571
171 211,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:43:59.440606
171 211,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:43:59.440606
172 212,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:44:06.259449
172 212,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-07-09 21:44:06.259449
173 213,3,demo,15,wibblewobble,"",user_commented_revision:c1953b3f4981e57d0031f4307f70209706f204f3,2012-07-09 21:45:16.908265
173 213,3,demo,15,wibblewobble,"",user_commented_revision:c1953b3f4981e57d0031f4307f70209706f204f3,2012-07-09 21:45:16.908265
174 214,3,demo,15,wibblewobble,"",user_commented_revision:c1953b3f4981e57d0031f4307f70209706f204f3,2012-07-09 21:45:29.881903
174 214,3,demo,15,wibblewobble,"",user_commented_revision:c1953b3f4981e57d0031f4307f70209706f204f3,2012-07-09 21:45:29.881903
175 217,2,admin,,rm__20120709_152203_19234__GitRepoTest,"",started_following_repo,2012-07-11 01:23:59.921383
175 217,2,admin,,rm__20120709_152203_19234__GitRepoTest,"",started_following_repo,2012-07-11 01:23:59.921383
176 218,2,admin,,rm__20120709_152203_19234__GitRepoTest,"",admin_deleted_repo,2012-07-11 01:25:33.983055
176 218,2,admin,,rm__20120709_152203_19234__GitRepoTest,"",admin_deleted_repo,2012-07-11 01:25:33.983055
177 221,38,zenqw,51,fork-test-12345,"",started_following_repo,2012-07-11 13:05:17.345386
177 221,38,zenqw,51,fork-test-12345,"",started_following_repo,2012-07-11 13:05:17.345386
178 222,38,zenqw,1,test,"",user_forked_repo:fork-test-12345,2012-07-11 13:05:17.362995
178 222,38,zenqw,1,test,"",user_forked_repo:fork-test-12345,2012-07-11 13:05:17.362995
179 223,38,zenqw,51,fork-test-12345,"",user_created_fork:fork-test-12345,2012-07-11 13:05:17.370362
179 223,38,zenqw,51,fork-test-12345,"",user_created_fork:fork-test-12345,2012-07-11 13:05:17.370362
180 224,38,zenqw,51,fork-test-12345,217.153.157.250,pull,2012-07-11 13:05:51.790618
180 224,38,zenqw,51,fork-test-12345,217.153.157.250,pull,2012-07-11 13:05:51.790618
181 225,38,zenqw,51,fork-test-12345,217.153.157.250,"push:ebf2e5c36ee3008d6fde8376e0dc2859c764aeef,6854386e16136812b9219e9d5e2971c87419eafa,46371e1dff2357d51e581e55882415bd18a5db8c",2012-07-11 13:07:46.354331
181 225,38,zenqw,51,fork-test-12345,217.153.157.250,"push:ebf2e5c36ee3008d6fde8376e0dc2859c764aeef,6854386e16136812b9219e9d5e2971c87419eafa,46371e1dff2357d51e581e55882415bd18a5db8c",2012-07-11 13:07:46.354331
182 226,38,zenqw,51,fork-test-12345,217.153.157.250,push:4db220a6e8a720ffd78d1fc383e3361e9f85e930,2012-07-11 13:10:13.793368
182 226,38,zenqw,51,fork-test-12345,217.153.157.250,push:4db220a6e8a720ffd78d1fc383e3361e9f85e930,2012-07-11 13:10:13.793368
183 227,38,zenqw,1,test,"",user_commented_pull_request:6,2012-07-11 13:11:54.473213
183 227,38,zenqw,1,test,"",user_commented_pull_request:6,2012-07-11 13:11:54.473213
184 228,38,zenqw,1,test,"",user_commented_pull_request:6,2012-07-11 13:12:03.64804
184 228,38,zenqw,1,test,"",user_commented_pull_request:6,2012-07-11 13:12:03.64804
185 229,38,zenqw,52,fork-fork-test-12345_2,"",started_following_repo,2012-07-11 13:14:31.237173
185 229,38,zenqw,52,fork-fork-test-12345_2,"",started_following_repo,2012-07-11 13:14:31.237173
186 230,38,zenqw,51,fork-test-12345,"",user_forked_repo:fork-fork-test-12345_2,2012-07-11 13:14:31.2571
186 230,38,zenqw,51,fork-test-12345,"",user_forked_repo:fork-fork-test-12345_2,2012-07-11 13:14:31.2571
187 231,38,zenqw,52,fork-fork-test-12345_2,"",user_created_fork:fork-fork-test-12345_2,2012-07-11 13:14:31.268722
187 231,38,zenqw,52,fork-fork-test-12345_2,"",user_created_fork:fork-fork-test-12345_2,2012-07-11 13:14:31.268722
188 232,38,zenqw,52,fork-fork-test-12345_2,217.153.157.250,pull,2012-07-11 13:15:52.326756
188 232,38,zenqw,52,fork-fork-test-12345_2,217.153.157.250,pull,2012-07-11 13:15:52.326756
189 233,38,zenqw,52,fork-fork-test-12345_2,217.153.157.250,"push:b9567e91f6ee7cd18b6332608a5a0ed12256ea48,2f709872121b0875b02f4fbfafa8fccd4c0613db",2012-07-11 13:16:51.063259
189 233,38,zenqw,52,fork-fork-test-12345_2,217.153.157.250,"push:b9567e91f6ee7cd18b6332608a5a0ed12256ea48,2f709872121b0875b02f4fbfafa8fccd4c0613db",2012-07-11 13:16:51.063259
190 234,38,zenqw,51,fork-test-12345,"",user_commented_pull_request:7,2012-07-11 13:18:04.300327
190 234,38,zenqw,51,fork-test-12345,"",user_commented_pull_request:7,2012-07-11 13:18:04.300327
191 239,40,cowwoc,54,glib,"",user_created_repo,2012-07-12 00:09:07.883466
191 239,40,cowwoc,54,glib,"",user_created_repo,2012-07-12 00:09:07.883466
192 240,3,demo,38,code-review-test,"",user_commented_pull_request:8,2012-07-12 00:50:50.791122
192 240,3,demo,38,code-review-test,"",user_commented_pull_request:8,2012-07-12 00:50:50.791122
193 241,3,demo,38,code-review-test,"",user_commented_pull_request:8,2012-07-12 00:51:04.795167
193 241,3,demo,38,code-review-test,"",user_commented_pull_request:8,2012-07-12 00:51:04.795167
194 242,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-12 13:41:59.717658
194 242,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-12 13:41:59.717658
195 243,43,lpyedge,55,group/brhg,"",started_following_repo,2012-07-12 15:09:28.550696
195 243,43,lpyedge,55,group/brhg,"",started_following_repo,2012-07-12 15:09:28.550696
196 244,43,lpyedge,55,group/brhg,"",user_created_repo,2012-07-12 15:09:28.562524
196 244,43,lpyedge,55,group/brhg,"",user_created_repo,2012-07-12 15:09:28.562524
197 245,43,lpyedge,56,brgit,"",started_following_repo,2012-07-12 15:18:17.687605
197 245,43,lpyedge,56,brgit,"",started_following_repo,2012-07-12 15:18:17.687605
198 246,43,lpyedge,56,brgit,"",user_created_repo,2012-07-12 15:18:17.702136
198 246,43,lpyedge,56,brgit,"",user_created_repo,2012-07-12 15:18:17.702136
199 247,1,default,34,a,54.247.183.89,pull,2012-07-12 16:53:15.165512
199 247,1,default,34,a,54.247.183.89,pull,2012-07-12 16:53:15.165512
200 248,45,krhodecode,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-07-12 23:09:25.38717
200 248,45,kxxx,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-07-12 23:09:25.38717
201 249,45,krhodecode,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-07-12 23:14:07.819338
201 249,45,kxxx,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-07-12 23:14:07.819338
202 250,45,krhodecode,57,SuperProject,"",started_following_repo,2012-07-12 23:17:38.213634
202 250,45,kxxx,57,SuperProject,"",started_following_repo,2012-07-12 23:17:38.213634
203 251,45,krhodecode,57,SuperProject,"",user_created_repo,2012-07-12 23:17:38.229359
203 251,45,kxxx,57,SuperProject,"",user_created_repo,2012-07-12 23:17:38.229359
204 252,45,krhodecode,57,SuperProject,216.51.137.66,push:a3188ce9ed64822ceae497665910c2e18cddf021,2012-07-12 23:23:23.111788
204 252,45,kxxx,57,SuperProject,216.51.137.66,push:a3188ce9ed64822ceae497665910c2e18cddf021,2012-07-12 23:23:23.111788
205 253,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-13 14:22:00.003158
205 253,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-13 14:22:00.003158
206 254,46,snazy2000,58,group/Test,"",started_following_repo,2012-07-13 19:14:31.959033
206 254,46,snazy2000,58,group/Test,"",started_following_repo,2012-07-13 19:14:31.959033
207 255,46,snazy2000,58,group/Test,"",user_created_repo,2012-07-13 19:14:31.972509
207 255,46,snazy2000,58,group/Test,"",user_created_repo,2012-07-13 19:14:31.972509
208 256,2,admin,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-07-15 03:03:17.100702
208 256,2,admin,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-07-15 03:03:17.100702
209 204,34,qqqqq,,zaraza,"",started_following_repo,2012-07-08 01:43:26.053084
209 204,34,qqqqq,,zaraza,"",started_following_repo,2012-07-08 01:43:26.053084
210 205,34,qqqqq,,zaraza,"",user_created_repo,2012-07-08 01:43:26.067756
210 205,34,qqqqq,,zaraza,"",user_created_repo,2012-07-08 01:43:26.067756
211 215,35,kvaster,,asd,"",started_following_repo,2012-07-09 22:03:29.676651
211 215,35,kvaster,,asd,"",started_following_repo,2012-07-09 22:03:29.676651
212 216,35,kvaster,,asd,"",user_created_repo,2012-07-09 22:03:29.688872
212 216,35,kvaster,,asd,"",user_created_repo,2012-07-09 22:03:29.688872
213 219,37,tester,,test2,"",started_following_repo,2012-07-11 11:07:19.065559
213 219,37,tester,,test2,"",started_following_repo,2012-07-11 11:07:19.065559
214 220,37,tester,,test2,"",user_created_repo,2012-07-11 11:07:19.080323
214 220,37,tester,,test2,"",user_created_repo,2012-07-11 11:07:19.080323
215 257,2,admin,38,code-review-test,"",user_commented_pull_request:8,2012-07-15 03:21:36.545532
215 257,2,admin,38,code-review-test,"",user_commented_pull_request:8,2012-07-15 03:21:36.545532
216 258,2,admin,38,code-review-test,"",user_closed_pull_request:8,2012-07-15 03:21:36.556543
216 258,2,admin,38,code-review-test,"",user_closed_pull_request:8,2012-07-15 03:21:36.556543
217 259,3,demo,59,fasdf,"",started_following_repo,2012-07-15 12:27:25.654257
217 259,3,demo,59,fasdf,"",started_following_repo,2012-07-15 12:27:25.654257
218 260,3,demo,59,fasdf,"",user_created_repo,2012-07-15 12:27:25.670633
218 260,3,demo,59,fasdf,"",user_created_repo,2012-07-15 12:27:25.670633
219 261,3,demo,60,group/aaa1,"",started_following_repo,2012-07-15 12:27:42.824398
219 261,3,demo,60,group/aaa1,"",started_following_repo,2012-07-15 12:27:42.824398
220 262,3,demo,60,group/aaa1,"",user_created_repo,2012-07-15 12:27:42.834237
220 262,3,demo,60,group/aaa1,"",user_created_repo,2012-07-15 12:27:42.834237
221 263,3,demo,34,a,"",user_updated_repo,2012-07-15 13:47:35.934007
221 263,3,demo,34,a,"",user_updated_repo,2012-07-15 13:47:35.934007
222 264,3,demo,61,group/testowe-repo,"",started_following_repo,2012-07-15 13:54:10.774348
222 264,3,demo,61,group/testowe-repo,"",started_following_repo,2012-07-15 13:54:10.774348
223 265,3,demo,61,group/testowe-repo,"",user_created_repo,2012-07-15 13:54:10.784709
223 265,3,demo,61,group/testowe-repo,"",user_created_repo,2012-07-15 13:54:10.784709
224 266,3,demo,61,group/testowe-repo,109.173.164.98,pull,2012-07-15 13:55:19.296932
224 266,3,demo,61,group/testowe-repo,109.173.164.98,pull,2012-07-15 13:55:19.296932
225 267,3,demo,61,group/testowe-repo,"",user_updated_repo,2012-07-15 13:57:16.969058
225 267,3,demo,61,group/testowe-repo,"",user_updated_repo,2012-07-15 13:57:16.969058
226 235,2,admin,,rm__20120711_012534_20311__rm__20120709_152203_19234__GitRepoTest,"",started_following_repo,2012-07-11 22:50:22.745467
226 235,2,admin,,rm__20120711_012534_20311__rm__20120709_152203_19234__GitRepoTest,"",started_following_repo,2012-07-11 22:50:22.745467
227 268,47,testuser,62,My-demo,"",started_following_repo,2012-07-15 20:00:47.633404
227 268,47,testuser,62,My-demo,"",started_following_repo,2012-07-15 20:00:47.633404
228 269,47,testuser,62,My-demo,"",user_created_repo,2012-07-15 20:00:47.64378
228 269,47,testuser,62,My-demo,"",user_created_repo,2012-07-15 20:00:47.64378
229 270,48,volcan,63,test9,"",started_following_repo,2012-07-15 20:45:08.177239
229 270,48,volcan,63,test9,"",started_following_repo,2012-07-15 20:45:08.177239
230 271,48,volcan,63,test9,"",user_created_repo,2012-07-15 20:45:08.191869
230 271,48,volcan,63,test9,"",user_created_repo,2012-07-15 20:45:08.191869
231 272,48,volcan,63,test9,"",push_local:7e10d450821a,2012-07-15 20:46:42.370199
231 272,48,volcan,63,test9,"",push_local:7e10d450821a,2012-07-15 20:46:42.370199
232 273,48,volcan,63,test9,"",push_local:049788cfb4b5,2012-07-15 20:48:26.176589
232 273,48,volcan,63,test9,"",push_local:049788cfb4b5,2012-07-15 20:48:26.176589
233 274,48,volcan,63,test9,"",user_commented_revision:049788cfb4b5254813312395aa380e988c32bbfb,2012-07-15 20:48:42.031217
233 274,48,volcan,63,test9,"",user_commented_revision:049788cfb4b5254813312395aa380e988c32bbfb,2012-07-15 20:48:42.031217
234 275,48,volcan,64,fork-test9,"",started_following_repo,2012-07-15 20:51:55.738241
234 275,48,volcan,64,fork-test9,"",started_following_repo,2012-07-15 20:51:55.738241
235 276,48,volcan,63,test9,"",user_forked_repo:fork-test9,2012-07-15 20:51:55.749793
235 276,48,volcan,63,test9,"",user_forked_repo:fork-test9,2012-07-15 20:51:55.749793
236 277,48,volcan,64,fork-test9,"",user_created_fork:fork-test9,2012-07-15 20:51:55.757696
236 277,48,volcan,64,fork-test9,"",user_created_fork:fork-test9,2012-07-15 20:51:55.757696
237 278,3,demo,65,COMMON,"",started_following_repo,2012-07-16 14:38:36.330869
237 278,3,demo,65,COMMON,"",started_following_repo,2012-07-16 14:38:36.330869
238 279,3,demo,65,COMMON,"",user_created_repo,2012-07-16 14:38:36.341796
238 279,3,demo,65,COMMON,"",user_created_repo,2012-07-16 14:38:36.341796
239 280,3,demo,39,fork-code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 09:26:23.907503
239 280,3,demo,39,fork-code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 09:26:23.907503
240 281,3,demo,39,fork-code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 09:26:58.039752
240 281,3,demo,39,fork-code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 09:26:58.039752
241 282,3,demo,39,fork-code-review-test,"",user_commented_revision:c5ed575f313788acd04614e3e0c13a5cdf5d7b39,2012-07-17 09:29:02.389958
241 282,3,demo,39,fork-code-review-test,"",user_commented_revision:c5ed575f313788acd04614e3e0c13a5cdf5d7b39,2012-07-17 09:29:02.389958
242 283,3,demo,39,fork-code-review-test,"",user_commented_revision:c5ed575f313788acd04614e3e0c13a5cdf5d7b39,2012-07-17 09:29:39.287759
242 283,3,demo,39,fork-code-review-test,"",user_commented_revision:c5ed575f313788acd04614e3e0c13a5cdf5d7b39,2012-07-17 09:29:39.287759
243 284,3,demo,38,code-review-test,"",user_commented_revision:0e4171fdb9d4267aa1145b840529d75673ea553d,2012-07-17 11:56:13.655476
243 284,3,demo,38,code-review-test,"",user_commented_revision:0e4171fdb9d4267aa1145b840529d75673ea553d,2012-07-17 11:56:13.655476
244 285,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-17 11:57:32.735913
244 285,3,demo,38,code-review-test,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-07-17 11:57:32.735913
245 286,52,prefer,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-07-17 12:22:56.170784
245 286,52,prefer,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-07-17 12:22:56.170784
246 287,52,prefer,38,code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 12:25:01.172222
246 287,52,prefer,38,code-review-test,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-07-17 12:25:01.172222
247 288,2,admin,34,a,"",push_local:445b722bf31d,2012-07-17 16:49:47.04337
247 288,2,admin,34,a,"",push_local:445b722bf31d,2012-07-17 16:49:47.04337
248 289,3,demo,66,pm-test,"",started_following_repo,2012-07-17 17:04:59.403792
248 289,3,demo,66,pm-test,"",started_following_repo,2012-07-17 17:04:59.403792
249 290,3,demo,8,Test_Repo,"",user_forked_repo:pm-test,2012-07-17 17:04:59.421648
249 290,3,demo,8,Test_Repo,"",user_forked_repo:pm-test,2012-07-17 17:04:59.421648
250 291,3,demo,66,pm-test,"",user_created_fork:pm-test,2012-07-17 17:04:59.432594
250 291,3,demo,66,pm-test,"",user_created_fork:pm-test,2012-07-17 17:04:59.432594
251 292,3,demo,66,pm-test,"",push_local:6cac4edb9e76,2012-07-17 17:06:10.733221
251 292,3,demo,66,pm-test,"",push_local:6cac4edb9e76,2012-07-17 17:06:10.733221
252 293,3,demo,66,pm-test,"",push_local:ceabeecd9ee8,2012-07-17 17:08:49.922859
252 293,3,demo,66,pm-test,"",push_local:ceabeecd9ee8,2012-07-17 17:08:49.922859
253 294,3,demo,67,group/aaa-repo,"",started_following_repo,2012-07-17 17:22:47.868349
253 294,3,demo,67,group/aaa-repo,"",started_following_repo,2012-07-17 17:22:47.868349
254 295,3,demo,67,group/aaa-repo,"",user_created_repo,2012-07-17 17:22:47.883704
254 295,3,demo,67,group/aaa-repo,"",user_created_repo,2012-07-17 17:22:47.883704
255 296,3,demo,68,aaa-project,"",started_following_repo,2012-07-17 17:23:40.541656
255 296,3,demo,68,aaa-project,"",started_following_repo,2012-07-17 17:23:40.541656
256 297,3,demo,68,aaa-project,"",user_created_repo,2012-07-17 17:23:40.552371
256 297,3,demo,68,aaa-project,"",user_created_repo,2012-07-17 17:23:40.552371
257 298,54,dude,69,group/bootstrap-fork,"",started_following_repo,2012-07-17 18:43:10.035674
257 298,54,dude,69,group/bootstrap-fork,"",started_following_repo,2012-07-17 18:43:10.035674
258 299,54,dude,36,bootstrap,"",user_forked_repo:group/bootstrap-fork,2012-07-17 18:43:11.233142
258 299,54,dude,36,bootstrap,"",user_forked_repo:group/bootstrap-fork,2012-07-17 18:43:11.233142
259 300,54,dude,69,group/bootstrap-fork,"",user_created_fork:group/bootstrap-fork,2012-07-17 18:43:11.241307
259 300,54,dude,69,group/bootstrap-fork,"",user_created_fork:group/bootstrap-fork,2012-07-17 18:43:11.241307
260 301,54,dude,69,group/bootstrap-fork,"",user_commented_revision:550e375af08a5b6ad401c043f8c0d2f3b1d3b6c2,2012-07-17 18:46:04.298716
260 301,54,dude,69,group/bootstrap-fork,"",user_commented_revision:550e375af08a5b6ad401c043f8c0d2f3b1d3b6c2,2012-07-17 18:46:04.298716
261 302,54,dude,70,group/A-new-git-repo,"",started_following_repo,2012-07-17 18:47:57.52576
261 302,54,dude,70,group/A-new-git-repo,"",started_following_repo,2012-07-17 18:47:57.52576
262 303,54,dude,70,group/A-new-git-repo,"",user_created_repo,2012-07-17 18:47:57.537413
262 303,54,dude,70,group/A-new-git-repo,"",user_created_repo,2012-07-17 18:47:57.537413
263 304,2,admin,71,rkquery-fork,"",started_following_repo,2012-07-18 15:54:45.756295
263 304,2,admin,71,rkquery-fork,"",started_following_repo,2012-07-18 15:54:45.756295
264 305,2,admin,71,rkquery-fork,"",admin_created_repo,2012-07-18 15:54:45.774453
264 305,2,admin,71,rkquery-fork,"",admin_created_repo,2012-07-18 15:54:45.774453
265 306,61,test2,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 06:02:57.703606
265 306,61,test2,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 06:02:57.703606
266 307,52,prefer,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 08:38:49.709445
266 307,52,prefer,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 08:38:49.709445
267 308,52,prefer,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 08:50:24.082494
267 308,52,prefer,36,bootstrap,"",user_commented_revision:cd2d82150cc27c1f81d2394a22efbf2dbec0e7be,2012-07-20 08:50:24.082494
268 309,64,selecta,72,testgit,"",started_following_repo,2012-07-20 10:46:02.535088
268 309,64,selecta,72,testgit,"",started_following_repo,2012-07-20 10:46:02.535088
269 310,64,selecta,72,testgit,"",user_created_repo,2012-07-20 10:46:02.548252
269 310,64,selecta,72,testgit,"",user_created_repo,2012-07-20 10:46:02.548252
270 311,64,selecta,72,testgit,"",push_local:62a88b300d22,2012-07-20 10:46:16.81029
270 311,64,selecta,72,testgit,"",push_local:62a88b300d22,2012-07-20 10:46:16.81029
271 312,63,derTester,73,derTester-testrepo,"",started_following_repo,2012-07-20 10:54:39.064697
271 312,63,derTester,73,derTester-testrepo,"",started_following_repo,2012-07-20 10:54:39.064697
272 313,63,derTester,73,derTester-testrepo,"",user_created_repo,2012-07-20 10:54:39.079807
272 313,63,derTester,73,derTester-testrepo,"",user_created_repo,2012-07-20 10:54:39.079807
273 314,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 10:57:31.114727
273 314,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 10:57:31.114727
274 315,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:07:50.716058
274 315,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:07:50.716058
275 316,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:08:03.688221
275 316,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:08:03.688221
276 317,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:08:16.565505
276 317,63,derTester,73,derTester-testrepo,"",user_commented_revision:84b31af757fe28ea9b9ac66053509a3a52b24f5c,2012-07-20 11:08:16.565505
277 318,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:5281b955815c98305051d3c008ff69c4ed533c0d,2012-07-20 11:11:10.31612
277 318,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:5281b955815c98305051d3c008ff69c4ed533c0d,2012-07-20 11:11:10.31612
278 319,63,derTester,74,fork-derTester-testrepo,"",started_following_repo,2012-07-20 11:25:25.419964
278 319,63,derTester,74,fork-derTester-testrepo,"",started_following_repo,2012-07-20 11:25:25.419964
279 320,63,derTester,73,derTester-testrepo,"",user_forked_repo:fork-derTester-testrepo,2012-07-20 11:25:25.438168
279 320,63,derTester,73,derTester-testrepo,"",user_forked_repo:fork-derTester-testrepo,2012-07-20 11:25:25.438168
280 321,63,derTester,74,fork-derTester-testrepo,"",user_created_fork:fork-derTester-testrepo,2012-07-20 11:25:25.447682
280 321,63,derTester,74,fork-derTester-testrepo,"",user_created_fork:fork-derTester-testrepo,2012-07-20 11:25:25.447682
281 322,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",pull,2012-07-20 11:26:37.491958
281 322,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",pull,2012-07-20 11:26:37.491958
282 323,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",push:f2735aac6abe27c8f01e76faf5c283bf46c4401f,2012-07-20 11:27:44.331062
282 323,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",push:f2735aac6abe27c8f01e76faf5c283bf46c4401f,2012-07-20 11:27:44.331062
283 324,63,derTester,73,derTester-testrepo,"",user_commented_pull_request:9,2012-07-20 11:29:31.042888
283 324,63,derTester,73,derTester-testrepo,"",user_commented_pull_request:9,2012-07-20 11:29:31.042888
284 325,63,derTester,73,derTester-testrepo,"",user_closed_pull_request:9,2012-07-20 11:29:31.049204
284 325,63,derTester,73,derTester-testrepo,"",user_closed_pull_request:9,2012-07-20 11:29:31.049204
285 326,66,frankschepers,75,group/TestRepFs,"",started_following_repo,2012-07-20 11:30:19.886707
285 326,66,frankschepers,75,group/TestRepFs,"",started_following_repo,2012-07-20 11:30:19.886707
286 327,66,frankschepers,75,group/TestRepFs,"",user_created_repo,2012-07-20 11:30:19.898463
286 327,66,frankschepers,75,group/TestRepFs,"",user_created_repo,2012-07-20 11:30:19.898463
287 328,66,frankschepers,76,group/testrep2,"",started_following_repo,2012-07-20 11:31:20.300601
287 328,66,frankschepers,76,group/testrep2,"",started_following_repo,2012-07-20 11:31:20.300601
288 329,66,frankschepers,76,group/testrep2,"",user_created_repo,2012-07-20 11:31:20.311022
288 329,66,frankschepers,76,group/testrep2,"",user_created_repo,2012-07-20 11:31:20.311022
289 330,66,frankschepers,75,group/TestRepFs,"",push_local:17387d4e13a1,2012-07-20 11:33:31.893613
289 330,66,frankschepers,75,group/TestRepFs,"",push_local:17387d4e13a1,2012-07-20 11:33:31.893613
290 331,66,frankschepers,75,group/TestRepFs,"",push_local:a897a2d13bc2,2012-07-20 11:34:22.754229
290 331,66,frankschepers,75,group/TestRepFs,"",push_local:a897a2d13bc2,2012-07-20 11:34:22.754229
291 332,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:1214054a771a04bc69963bf26dfbc8ee2cb9122b,2012-07-20 11:36:39.441367
291 332,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19",push:1214054a771a04bc69963bf26dfbc8ee2cb9122b,2012-07-20 11:36:39.441367
292 333,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",pull,2012-07-20 11:36:51.746969
292 333,63,derTester,74,fork-derTester-testrepo,"unknown, 194.8.219.19",pull,2012-07-20 11:36:51.746969
293 334,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19","push:f2735aac6abe27c8f01e76faf5c283bf46c4401f,0659071d48979ed22941a269c97368b4663ae958",2012-07-20 11:37:40.944129
293 334,63,derTester,73,derTester-testrepo,"unknown, 194.8.219.19","push:f2735aac6abe27c8f01e76faf5c283bf46c4401f,0659071d48979ed22941a269c97368b4663ae958",2012-07-20 11:37:40.944129
294 335,66,frankschepers,75,group/TestRepFs,137.120.73.17,pull,2012-07-20 11:39:49.54307
294 335,66,frankschepers,75,group/TestRepFs,137.120.73.17,pull,2012-07-20 11:39:49.54307
295 336,1,default,24,fork-Something,64.208.49.214,pull,2012-07-20 13:49:55.94902
295 336,1,default,24,fork-Something,64.208.49.214,pull,2012-07-20 13:49:55.94902
296 337,1,default,24,fork-Something,64.208.49.218,pull,2012-07-20 13:54:22.988482
296 337,1,default,24,fork-Something,64.208.49.218,pull,2012-07-20 13:54:22.988482
297 338,3,demo,68,aaa-project,"",user_updated_repo,2012-07-20 15:39:52.858365
297 338,3,demo,68,aaa-project,"",user_updated_repo,2012-07-20 15:39:52.858365
298 339,63,derTester,73,derTester-testrepo,"",user_updated_repo,2012-07-20 16:27:14.407843
298 339,63,derTester,73,derTester-testrepo,"",user_updated_repo,2012-07-20 16:27:14.407843
299 340,67,openinformation,73,derTester-testrepo,"",push_local:328fae54d511,2012-07-20 16:31:46.146409
299 340,67,openinformation,73,derTester-testrepo,"",push_local:328fae54d511,2012-07-20 16:31:46.146409
300 341,67,openinformation,73,derTester-testrepo,"",push_local:0c569a05f314,2012-07-20 16:32:54.826366
300 341,67,openinformation,73,derTester-testrepo,"",push_local:0c569a05f314,2012-07-20 16:32:54.826366
301 342,63,derTester,73,derTester-testrepo,"",user_commented_revision:328fae54d511ba83c8e9ffe1cb9f42d30904a4a8,2012-07-20 16:33:01.509041
301 342,63,derTester,73,derTester-testrepo,"",user_commented_revision:328fae54d511ba83c8e9ffe1cb9f42d30904a4a8,2012-07-20 16:33:01.509041
302 343,63,derTester,73,derTester-testrepo,"",user_commented_revision:328fae54d511ba83c8e9ffe1cb9f42d30904a4a8,2012-07-20 16:33:18.910418
302 343,63,derTester,73,derTester-testrepo,"",user_commented_revision:328fae54d511ba83c8e9ffe1cb9f42d30904a4a8,2012-07-20 16:33:18.910418
303 344,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:33:47.140002
303 344,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:33:47.140002
304 345,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:08.640552
304 345,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:08.640552
305 346,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:10.546976
305 346,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:10.546976
306 347,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:19.485402
306 347,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:19.485402
307 348,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:47.956513
307 348,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:35:47.956513
308 349,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:36:19.043512
308 349,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:36:19.043512
309 350,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:36:48.577132
309 350,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:36:48.577132
310 351,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:38:16.822535
310 351,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:38:16.822535
311 352,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:38:46.389457
311 352,63,derTester,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-20 16:38:46.389457
312 353,3,demo,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 18:48:42.618318
312 353,3,demo,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 18:48:42.618318
313 354,3,demo,71,rkquery-fork,"",user_commented_revision:06684d34a0dfeec4ca84eb3a4de3ac4eca659b5a,2012-07-20 18:53:30.111799
313 354,3,demo,71,rkquery-fork,"",user_commented_revision:06684d34a0dfeec4ca84eb3a4de3ac4eca659b5a,2012-07-20 18:53:30.111799
314 355,2,admin,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 20:37:34.763255
314 355,2,admin,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 20:37:34.763255
315 356,2,admin,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 20:37:54.48707
315 356,2,admin,66,pm-test,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-20 20:37:54.48707
316 357,3,demo,77,group/testme-out,"",started_following_repo,2012-07-21 03:36:40.318489
316 357,3,demo,77,group/testme-out,"",started_following_repo,2012-07-21 03:36:40.318489
317 358,3,demo,77,group/testme-out,"",user_created_repo,2012-07-21 03:36:40.33199
317 358,3,demo,77,group/testme-out,"",user_created_repo,2012-07-21 03:36:40.33199
318 362,68,adam_cubiware,79,fork-testgit,"",started_following_repo,2012-07-21 12:42:44.576306
318 362,68,adam_cubiware,79,fork-testgit,"",started_following_repo,2012-07-21 12:42:44.576306
319 363,68,adam_cubiware,72,testgit,"",user_forked_repo:fork-testgit,2012-07-21 12:42:44.638332
319 363,68,adam_cubiware,72,testgit,"",user_forked_repo:fork-testgit,2012-07-21 12:42:44.638332
320 364,68,adam_cubiware,79,fork-testgit,"",user_created_fork:fork-testgit,2012-07-21 12:42:44.652192
320 364,68,adam_cubiware,79,fork-testgit,"",user_created_fork:fork-testgit,2012-07-21 12:42:44.652192
321 365,68,adam_cubiware,79,fork-testgit,"",push_local:ae0315d73341,2012-07-21 12:44:33.911138
321 365,68,adam_cubiware,79,fork-testgit,"",push_local:ae0315d73341,2012-07-21 12:44:33.911138
322 366,68,adam_cubiware,79,fork-testgit,"",user_updated_repo,2012-07-21 12:47:12.163568
322 366,68,adam_cubiware,79,fork-testgit,"",user_updated_repo,2012-07-21 12:47:12.163568
323 367,68,adam_cubiware,79,fork-testgit,"",push_local:db50409cdc5f,2012-07-21 12:53:44.632803
323 367,68,adam_cubiware,79,fork-testgit,"",push_local:db50409cdc5f,2012-07-21 12:53:44.632803
324 368,1,default,39,fork-code-review-test,91.143.250.55,pull,2012-07-21 23:48:23.449665
324 368,1,default,39,fork-code-review-test,91.143.250.55,pull,2012-07-21 23:48:23.449665
325 369,1,default,39,fork-code-review-test,91.143.250.55,pull,2012-07-21 23:48:36.982768
325 369,1,default,39,fork-code-review-test,91.143.250.55,pull,2012-07-21 23:48:36.982768
326 372,72,rushman,38,code-review-test,"",user_commented_pull_request:10,2012-07-22 23:44:39.072741
326 372,72,rushman,38,code-review-test,"",user_commented_pull_request:10,2012-07-22 23:44:39.072741
327 373,72,rushman,38,code-review-test,"",user_closed_pull_request:10,2012-07-22 23:44:39.082942
327 373,72,rushman,38,code-review-test,"",user_closed_pull_request:10,2012-07-22 23:44:39.082942
328 374,3,demo,34,a,"",user_updated_repo,2012-07-23 05:19:06.777651
328 374,3,demo,34,a,"",user_updated_repo,2012-07-23 05:19:06.777651
329 375,2,admin,34,a,"",push_local:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-23 14:57:35.353962
329 375,2,admin,34,a,"",push_local:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-23 14:57:35.353962
330 376,2,admin,34,a,"",push_local:7ec6b566916b553f8ab92aaf1c993269b96b52ee,2012-07-23 14:57:47.489325
330 376,2,admin,34,a,"",push_local:7ec6b566916b553f8ab92aaf1c993269b96b52ee,2012-07-23 14:57:47.489325
331 377,2,admin,34,a,"",push_local:7672806f881f67eb1441d00b16e983e761127cb6,2012-07-23 14:58:18.73749
331 377,2,admin,34,a,"",push_local:7672806f881f67eb1441d00b16e983e761127cb6,2012-07-23 14:58:18.73749
332 378,2,admin,34,a,"",push_local:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-07-23 14:58:29.908109
332 378,2,admin,34,a,"",push_local:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-07-23 14:58:29.908109
333 379,75,treshnikov,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-23 16:43:41.7336
333 379,75,treshnikov,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-23 16:43:41.7336
334 380,75,treshnikov,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-23 16:43:55.306834
334 380,75,treshnikov,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-07-23 16:43:55.306834
335 381,3,demo,81,FS_dummy,"",started_following_repo,2012-07-24 11:59:32.839397
335 381,3,demo,81,FS_dummy,"",started_following_repo,2012-07-24 11:59:32.839397
336 382,3,demo,81,FS_dummy,"",user_created_repo,2012-07-24 11:59:32.855419
336 382,3,demo,81,FS_dummy,"",user_created_repo,2012-07-24 11:59:32.855419
337 383,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-24 13:14:36.794825
337 383,67,openinformation,73,derTester-testrepo,"",user_commented_revision:0c569a05f31488c3a0b0bef9540e774199d5761b,2012-07-24 13:14:36.794825
338 384,67,openinformation,82,fork-derTester-testrepo2,"",started_following_repo,2012-07-24 13:21:01.528796
338 384,67,openinformation,82,fork-derTester-testrepo2,"",started_following_repo,2012-07-24 13:21:01.528796
339 385,67,openinformation,73,derTester-testrepo,"",user_forked_repo:fork-derTester-testrepo2,2012-07-24 13:21:01.555045
339 385,67,openinformation,73,derTester-testrepo,"",user_forked_repo:fork-derTester-testrepo2,2012-07-24 13:21:01.555045
340 386,67,openinformation,82,fork-derTester-testrepo2,"",user_created_fork:fork-derTester-testrepo2,2012-07-24 13:21:01.563889
340 386,67,openinformation,82,fork-derTester-testrepo2,"",user_created_fork:fork-derTester-testrepo2,2012-07-24 13:21:01.563889
341 387,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:38:45.147594
341 387,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:38:45.147594
342 388,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:40:33.021633
342 388,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:40:33.021633
343 389,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:40:53.491125
343 389,77,test,34,a,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-07-24 15:40:53.491125
344 390,3,demo,83,group/roman-test,"",started_following_repo,2012-07-24 16:09:25.411937
344 390,3,demo,83,group/roman-test,"",started_following_repo,2012-07-24 16:09:25.411937
345 391,3,demo,83,group/roman-test,"",user_created_repo,2012-07-24 16:09:25.426938
345 391,3,demo,83,group/roman-test,"",user_created_repo,2012-07-24 16:09:25.426938
346 392,68,adam_cubiware,79,fork-testgit,"",push_local:d5c6ffefdf5499201c2679717d65d5a642f1e163,2012-07-24 19:33:06.111179
346 392,68,adam_cubiware,79,fork-testgit,"",push_local:d5c6ffefdf5499201c2679717d65d5a642f1e163,2012-07-24 19:33:06.111179
347 393,68,adam_cubiware,79,fork-testgit,"",user_commented_revision:d5c6ffefdf5499201c2679717d65d5a642f1e163,2012-07-24 19:33:44.899645
347 393,68,adam_cubiware,79,fork-testgit,"",user_commented_revision:d5c6ffefdf5499201c2679717d65d5a642f1e163,2012-07-24 19:33:44.899645
348 394,68,adam_cubiware,79,fork-testgit,"",user_updated_repo,2012-07-24 19:35:04.803706
348 394,68,adam_cubiware,79,fork-testgit,"",user_updated_repo,2012-07-24 19:35:04.803706
349 395,68,adam_cubiware,79,group/fork-testgit,"",user_updated_repo,2012-07-24 19:37:19.243784
349 395,68,adam_cubiware,79,group/fork-testgit,"",user_updated_repo,2012-07-24 19:37:19.243784
350 396,68,adam_cubiware,84,group/fork-Test_Repo,"",started_following_repo,2012-07-24 19:40:08.15438
350 396,68,adam_cubiware,84,group/fork-Test_Repo,"",started_following_repo,2012-07-24 19:40:08.15438
351 397,68,adam_cubiware,8,Test_Repo,"",user_forked_repo:group/fork-Test_Repo,2012-07-24 19:40:08.173841
351 397,68,adam_cubiware,8,Test_Repo,"",user_forked_repo:group/fork-Test_Repo,2012-07-24 19:40:08.173841
352 398,68,adam_cubiware,84,group/fork-Test_Repo,"",user_created_fork:group/fork-Test_Repo,2012-07-24 19:40:08.182255
352 398,68,adam_cubiware,84,group/fork-Test_Repo,"",user_created_fork:group/fork-Test_Repo,2012-07-24 19:40:08.182255
353 399,68,adam_cubiware,84,group/fork-Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-24 19:41:34.833349
353 399,68,adam_cubiware,84,group/fork-Test_Repo,"",user_commented_revision:1b6b9ca4d1e2776d8229f032c3a3136ae8c709a5,2012-07-24 19:41:34.833349
354 400,68,adam_cubiware,84,group/fork-Test_Repo,"",push_local:27213189ef4e7e8b47209d4e123042419cb1154a,2012-07-24 19:44:35.829394
354 400,68,adam_cubiware,84,group/fork-Test_Repo,"",push_local:27213189ef4e7e8b47209d4e123042419cb1154a,2012-07-24 19:44:35.829394
355 401,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:11,2012-07-24 19:47:49.707363
355 401,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:11,2012-07-24 19:47:49.707363
356 402,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:11,2012-07-24 19:48:18.79552
356 402,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:11,2012-07-24 19:48:18.79552
357 403,68,adam_cubiware,8,Test_Repo,"",user_closed_pull_request:11,2012-07-24 19:48:18.804561
357 403,68,adam_cubiware,8,Test_Repo,"",user_closed_pull_request:11,2012-07-24 19:48:18.804561
358 404,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:12,2012-07-24 19:50:08.792408
358 404,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:12,2012-07-24 19:50:08.792408
359 405,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:12,2012-07-24 19:50:21.615437
359 405,68,adam_cubiware,8,Test_Repo,"",user_commented_pull_request:12,2012-07-24 19:50:21.615437
360 406,68,adam_cubiware,85,group/qbtest,"",started_following_repo,2012-07-24 19:54:48.682241
360 406,68,adam_cubiware,85,group/qbtest,"",started_following_repo,2012-07-24 19:54:48.682241
361 407,68,adam_cubiware,85,group/qbtest,"",user_created_repo,2012-07-24 19:54:48.693521
361 407,68,adam_cubiware,85,group/qbtest,"",user_created_repo,2012-07-24 19:54:48.693521
362 408,68,adam_cubiware,86,qbtest,"",started_following_repo,2012-07-24 19:56:30.027296
362 408,68,adam_cubiware,86,qbtest,"",started_following_repo,2012-07-24 19:56:30.027296
363 409,68,adam_cubiware,86,qbtest,"",user_created_repo,2012-07-24 19:56:30.040939
363 409,68,adam_cubiware,86,qbtest,"",user_created_repo,2012-07-24 19:56:30.040939
364 410,68,adam_cubiware,86,qbtest,"",push_local:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-07-24 19:57:03.960782
364 410,68,adam_cubiware,86,qbtest,"",push_local:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-07-24 19:57:03.960782
365 411,68,adam_cubiware,87,fork-qbtest,"",started_following_repo,2012-07-24 19:57:49.226459
365 411,68,adam_cubiware,87,fork-qbtest,"",started_following_repo,2012-07-24 19:57:49.226459
366 370,3,demo,,group/aaaaaa1,"",started_following_repo,2012-07-22 03:57:39.381977
366 370,3,demo,,group/aaaaaa1,"",started_following_repo,2012-07-22 03:57:39.381977
367 371,3,demo,,group/aaaaaa1,"",user_created_repo,2012-07-22 03:57:39.394127
367 371,3,demo,,group/aaaaaa1,"",user_created_repo,2012-07-22 03:57:39.394127
368 412,68,adam_cubiware,86,qbtest,"",user_forked_repo:fork-qbtest,2012-07-24 19:57:49.242082
368 412,68,adam_cubiware,86,qbtest,"",user_forked_repo:fork-qbtest,2012-07-24 19:57:49.242082
369 413,68,adam_cubiware,87,fork-qbtest,"",user_created_fork:fork-qbtest,2012-07-24 19:57:49.249296
369 413,68,adam_cubiware,87,fork-qbtest,"",user_created_fork:fork-qbtest,2012-07-24 19:57:49.249296
370 417,68,adam_cubiware,87,fork-qbtest,"",user_updated_repo,2012-07-24 20:01:54.283384
370 417,68,adam_cubiware,87,fork-qbtest,"",user_updated_repo,2012-07-24 20:01:54.283384
371 419,68,adam_cubiware,86,qbtest,"",user_commented_pull_request:13,2012-07-24 20:06:34.189996
371 419,68,adam_cubiware,86,qbtest,"",user_commented_pull_request:13,2012-07-24 20:06:34.189996
372 414,68,adam_cubiware,87,fork-qbtest,"",push_local:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 19:58:20.712898
372 414,68,adam_cubiware,87,fork-qbtest,"",push_local:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 19:58:20.712898
373 415,68,adam_cubiware,86,qbtest,"",user_commented_pull_request:13,2012-07-24 19:59:22.241511
373 415,68,adam_cubiware,86,qbtest,"",user_commented_pull_request:13,2012-07-24 19:59:22.241511
374 418,68,adam_cubiware,86,qbtest,"",user_updated_repo,2012-07-24 20:02:57.048453
374 418,68,adam_cubiware,86,qbtest,"",user_updated_repo,2012-07-24 20:02:57.048453
375 421,3,demo,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 20:11:04.301032
375 421,3,demo,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 20:11:04.301032
376 416,68,adam_cubiware,87,fork-qbtest,"",user_updated_repo,2012-07-24 20:01:41.416418
376 416,68,adam_cubiware,87,fork-qbtest,"",user_updated_repo,2012-07-24 20:01:41.416418
377 420,68,adam_cubiware,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 20:07:59.979705
377 420,68,adam_cubiware,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-24 20:07:59.979705
378 422,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:20:05.329183
378 422,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:20:05.329183
379 423,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:21:11.393746
379 423,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:21:11.393746
380 424,3,demo,87,fork-qbtest,"",push_local:5556ddcc6f459ceaf3a5a305c56d3addd2ac7fb2,2012-07-25 10:22:50.053374
380 424,3,demo,87,fork-qbtest,"",push_local:5556ddcc6f459ceaf3a5a305c56d3addd2ac7fb2,2012-07-25 10:22:50.053374
381 425,3,demo,87,fork-qbtest,"",user_commented_pull_request:14,2012-07-25 10:23:19.28703
381 425,3,demo,87,fork-qbtest,"",user_commented_pull_request:14,2012-07-25 10:23:19.28703
382 426,3,demo,87,fork-qbtest,"",user_closed_pull_request:14,2012-07-25 10:23:19.294999
382 426,3,demo,87,fork-qbtest,"",user_closed_pull_request:14,2012-07-25 10:23:19.294999
383 427,68,adam_cubiware,87,fork-qbtest,"",user_commented_revision:5556ddcc6f459ceaf3a5a305c56d3addd2ac7fb2,2012-07-25 10:26:23.952883
383 427,68,adam_cubiware,87,fork-qbtest,"",user_commented_revision:5556ddcc6f459ceaf3a5a305c56d3addd2ac7fb2,2012-07-25 10:26:23.952883
384 430,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:28:09.672602
384 430,3,demo,86,qbtest,"",user_commented_pull_request:13,2012-07-25 10:28:09.672602
385 431,3,demo,86,qbtest,"",user_closed_pull_request:13,2012-07-25 10:28:09.683535
385 431,3,demo,86,qbtest,"",user_closed_pull_request:13,2012-07-25 10:28:09.683535
386 432,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:04:21.750739
386 432,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:04:21.750739
387 435,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:05:29.409739
387 435,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:05:29.409739
388 437,2,admin,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-25 15:06:24.177921
388 437,2,admin,87,fork-qbtest,"",user_commented_revision:8e189d16864ee66863e6153fd32b8ba3f2a25057,2012-07-25 15:06:24.177921
389 439,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:06:58.589656
389 439,3,demo,86,qbtest,"",user_commented_pull_request:15,2012-07-25 15:06:58.589656
390 440,3,demo,34,a,"",user_updated_repo,2012-07-25 15:16:08.628588
390 440,3,demo,34,a,"",user_updated_repo,2012-07-25 15:16:08.628588
391 441,3,demo,34,a,"",user_updated_repo,2012-07-25 15:16:50.160888
391 441,3,demo,34,a,"",user_updated_repo,2012-07-25 15:16:50.160888
392 442,3,demo,34,a,"",user_updated_repo,2012-07-25 15:17:06.323596
392 442,3,demo,34,a,"",user_updated_repo,2012-07-25 15:17:06.323596
393 443,3,demo,88,group/project-z,"",started_following_repo,2012-07-25 15:51:18.772615
393 443,3,demo,88,group/project-z,"",started_following_repo,2012-07-25 15:51:18.772615
394 444,3,demo,88,group/project-z,"",user_created_repo,2012-07-25 15:51:18.782868
394 444,3,demo,88,group/project-z,"",user_created_repo,2012-07-25 15:51:18.782868
395 445,3,demo,34,a,"",stopped_following_repo,2012-07-25 16:50:40.354634
395 445,3,demo,34,a,"",stopped_following_repo,2012-07-25 16:50:40.354634
396 446,3,demo,,Teszomg,"",started_following_repo,2012-07-25 16:58:00.642525
396 446,3,demo,,Teszomg,"",started_following_repo,2012-07-25 16:58:00.642525
397 447,3,demo,,Teszomg,"",user_created_repo,2012-07-25 16:58:00.653681
397 447,3,demo,,Teszomg,"",user_created_repo,2012-07-25 16:58:00.653681
398 448,3,demo,,Teszomg,"",user_deleted_repo,2012-07-25 17:00:13.827353
398 448,3,demo,,Teszomg,"",user_deleted_repo,2012-07-25 17:00:13.827353
399 449,3,demo,90,a-fork1,"",started_following_repo,2012-07-25 17:52:15.778227
399 449,3,demo,90,a-fork1,"",started_following_repo,2012-07-25 17:52:15.778227
400 450,3,demo,34,a,"",user_forked_repo:a-fork1,2012-07-25 17:52:15.799024
400 450,3,demo,34,a,"",user_forked_repo:a-fork1,2012-07-25 17:52:15.799024
401 451,3,demo,90,a-fork1,"",user_created_fork:a-fork1,2012-07-25 17:52:15.811638
401 451,3,demo,90,a-fork1,"",user_created_fork:a-fork1,2012-07-25 17:52:15.811638
402 452,3,demo,17,fork-test1,"",user_updated_repo,2012-07-25 18:30:05.412282
402 452,3,demo,17,fork-test1,"",user_updated_repo,2012-07-25 18:30:05.412282
403 453,3,demo,91,SuperSolver,"",started_following_repo,2012-07-26 17:05:45.224827
403 453,3,demo,91,SuperSolver,"",started_following_repo,2012-07-26 17:05:45.224827
404 454,3,demo,91,SuperSolver,"",user_created_repo,2012-07-26 17:05:45.238431
404 454,3,demo,91,SuperSolver,"",user_created_repo,2012-07-26 17:05:45.238431
405 455,3,demo,91,SuperSolver,98.175.25.130,push:9191f84aab39f525a510865e8bfabdda11dd72a5,2012-07-26 17:09:12.133493
405 455,3,demo,91,SuperSolver,98.175.25.130,push:9191f84aab39f525a510865e8bfabdda11dd72a5,2012-07-26 17:09:12.133493
406 456,3,demo,92,group/kanad,"",started_following_repo,2012-07-26 21:11:56.38604
406 456,3,demo,92,group/kanad,"",started_following_repo,2012-07-26 21:11:56.38604
407 457,3,demo,92,group/kanad,"",user_created_repo,2012-07-26 21:11:56.400791
407 457,3,demo,92,group/kanad,"",user_created_repo,2012-07-26 21:11:56.400791
408 458,3,demo,92,group/kanad,"",user_updated_repo,2012-07-26 21:19:27.63466
408 458,3,demo,92,group/kanad,"",user_updated_repo,2012-07-26 21:19:27.63466
409 459,2,admin,91,SuperSolver,"",push_local:466e4c17d8eda2789c5c885eeb376592f612c305,2012-07-26 22:17:43.023259
409 459,2,admin,91,SuperSolver,"",push_local:466e4c17d8eda2789c5c885eeb376592f612c305,2012-07-26 22:17:43.023259
410 460,2,admin,91,SuperSolver,"",user_commented_revision:9191f84aab39f525a510865e8bfabdda11dd72a5,2012-07-26 22:18:16.224826
410 460,2,admin,91,SuperSolver,"",user_commented_revision:9191f84aab39f525a510865e8bfabdda11dd72a5,2012-07-26 22:18:16.224826
411 461,81,ahamilton,34,a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-07-26 22:57:40.178759
411 461,81,ahamilton,34,a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-07-26 22:57:40.178759
412 462,1,default,34,a,54.247.183.89,pull,2012-07-26 23:14:42.710865
412 462,1,default,34,a,54.247.183.89,pull,2012-07-26 23:14:42.710865
413 463,2,admin,34,a,"",admin_updated_repo,2012-07-27 01:33:24.257365
413 463,2,admin,34,a,"",admin_updated_repo,2012-07-27 01:33:24.257365
414 464,2,admin,56,brgit,"",admin_updated_repo,2012-07-27 01:33:54.214629
414 464,2,admin,56,brgit,"",admin_updated_repo,2012-07-27 01:33:54.214629
415 465,2,admin,93,fork-a,"",started_following_repo,2012-07-27 18:07:48.00309
415 465,2,admin,93,fork-a,"",started_following_repo,2012-07-27 18:07:48.00309
416 466,2,admin,34,a,"",user_forked_repo:fork-a,2012-07-27 18:07:48.022053
416 466,2,admin,34,a,"",user_forked_repo:fork-a,2012-07-27 18:07:48.022053
417 467,2,admin,93,fork-a,"",user_created_fork:fork-a,2012-07-27 18:07:48.032889
417 467,2,admin,93,fork-a,"",user_created_fork:fork-a,2012-07-27 18:07:48.032889
418 468,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:16:49.199267
418 468,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:16:49.199267
419 469,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:05.556031
419 469,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:05.556031
420 470,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:24.114857
420 470,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:24.114857
421 471,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:59.530129
421 471,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:17:59.530129
422 472,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:26:13.302324
422 472,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:26:13.302324
423 473,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:27:01.350536
423 473,2,admin,68,aaa-project,"",admin_updated_repo,2012-07-28 16:27:01.350536
424 474,86,gurce,,testies1.2.3,"",started_following_repo,2012-07-29 11:08:56.897379
424 474,86,gurce,,testies1.2.3,"",started_following_repo,2012-07-29 11:08:56.897379
425 475,86,gurce,,testies1.2.3,"",user_created_repo,2012-07-29 11:08:56.912364
425 475,86,gurce,,testies1.2.3,"",user_created_repo,2012-07-29 11:08:56.912364
426 476,86,gurce,,testies1.2.3,"",user_updated_repo,2012-07-29 11:14:02.439893
426 476,86,gurce,,testies1.2.3,"",user_updated_repo,2012-07-29 11:14:02.439893
427 477,86,gurce,,testies1.2.3,"",user_deleted_repo,2012-07-29 11:18:46.488699
427 477,86,gurce,,testies1.2.3,"",user_deleted_repo,2012-07-29 11:18:46.488699
428 480,2,admin,,group/Linux,"",started_following_repo,2012-07-30 14:44:34.637639
428 480,2,admin,,group/Linux,"",started_following_repo,2012-07-30 14:44:34.637639
429 481,2,admin,,group/Linux,"",admin_deleted_repo,2012-07-30 14:52:58.379429
429 481,2,admin,,group/Linux,"",admin_deleted_repo,2012-07-30 14:52:58.379429
430 482,3,demo,98,group/Another-Test-Repository,"",started_following_repo,2012-07-31 10:18:43.621644
430 482,3,demo,98,group/Another-Test-Repository,"",started_following_repo,2012-07-31 10:18:43.621644
431 483,3,demo,98,group/Another-Test-Repository,"",user_created_repo,2012-07-31 10:18:43.634721
431 483,3,demo,98,group/Another-Test-Repository,"",user_created_repo,2012-07-31 10:18:43.634721
432 484,3,demo,98,group/Another-Test-Repository,"",push_local:751faf9101afc1d11ce4c2a169991a17edbb7955,2012-07-31 10:19:46.035458
432 484,3,demo,98,group/Another-Test-Repository,"",push_local:751faf9101afc1d11ce4c2a169991a17edbb7955,2012-07-31 10:19:46.035458
433 485,3,demo,98,group/Another-Test-Repository,"",user_updated_repo,2012-07-31 10:20:54.422059
433 485,3,demo,98,group/Another-Test-Repository,"",user_updated_repo,2012-07-31 10:20:54.422059
434 486,3,demo,98,group/Another-Test-Repository,"",user_updated_repo,2012-07-31 10:21:47.573228
434 486,3,demo,98,group/Another-Test-Repository,"",user_updated_repo,2012-07-31 10:21:47.573228
435 487,3,demo,98,group/Another-Test-Repository,"",stopped_following_repo,2012-07-31 10:22:43.12098
435 487,3,demo,98,group/Another-Test-Repository,"",stopped_following_repo,2012-07-31 10:22:43.12098
436 488,3,demo,98,group/Another-Test-Repository,"",started_following_repo,2012-07-31 10:22:48.801682
436 488,3,demo,98,group/Another-Test-Repository,"",started_following_repo,2012-07-31 10:22:48.801682
437 489,90,klaim,99,another-fork-to-check-code-review,"",started_following_repo,2012-07-31 14:25:57.394187
437 489,90,klaim,99,another-fork-to-check-code-review,"",started_following_repo,2012-07-31 14:25:57.394187
438 490,90,klaim,38,code-review-test,"",user_forked_repo:another-fork-to-check-code-review,2012-07-31 14:25:58.882735
438 490,90,klaim,38,code-review-test,"",user_forked_repo:another-fork-to-check-code-review,2012-07-31 14:25:58.882735
439 491,90,klaim,99,another-fork-to-check-code-review,"",user_created_fork:another-fork-to-check-code-review,2012-07-31 14:25:58.889998
439 491,90,klaim,99,another-fork-to-check-code-review,"",user_created_fork:another-fork-to-check-code-review,2012-07-31 14:25:58.889998
440 492,90,klaim,99,another-fork-to-check-code-review,"",user_commented_revision:c29efd2723954ba34fb63f9c7dce21a68b09715c,2012-07-31 14:27:39.427879
440 492,90,klaim,99,another-fork-to-check-code-review,"",user_commented_revision:c29efd2723954ba34fb63f9c7dce21a68b09715c,2012-07-31 14:27:39.427879
441 493,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:08.127006
441 493,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:08.127006
442 494,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:37.692433
442 494,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:37.692433
443 495,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:40.983571
443 495,1,default,71,rkquery-fork,89.0.87.249,pull,2012-07-31 15:08:40.983571
444 496,3,demo,100,wurst,"",started_following_repo,2012-07-31 15:14:37.401815
444 496,3,demo,100,wurst,"",started_following_repo,2012-07-31 15:14:37.401815
445 497,3,demo,100,wurst,"",user_created_repo,2012-07-31 15:14:37.412923
445 497,3,demo,100,wurst,"",user_created_repo,2012-07-31 15:14:37.412923
446 498,1,default,100,wurst,89.0.87.249,pull,2012-07-31 15:14:45.754467
446 498,1,default,100,wurst,89.0.87.249,pull,2012-07-31 15:14:45.754467
447 499,91,mzambrano,101,Prueba,"",started_following_repo,2012-07-31 17:04:41.872432
447 499,91,mzambrano,101,Prueba,"",started_following_repo,2012-07-31 17:04:41.872432
448 500,91,mzambrano,101,Prueba,"",user_created_repo,2012-07-31 17:04:41.883651
448 500,91,mzambrano,101,Prueba,"",user_created_repo,2012-07-31 17:04:41.883651
449 501,91,mzambrano,101,Prueba,"",push_local:9ecaa313dfd69d04eb99a6ab4650d5073d0979e0,2012-07-31 17:05:04.373838
449 501,91,mzambrano,101,Prueba,"",push_local:9ecaa313dfd69d04eb99a6ab4650d5073d0979e0,2012-07-31 17:05:04.373838
450 506,3,demo,90,a-fork1,"",push_local:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-08-01 03:18:34.613972
450 506,3,demo,90,a-fork1,"",push_local:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-08-01 03:18:34.613972
451 507,3,demo,90,a-fork1,"",user_updated_repo,2012-08-01 03:19:21.260608
451 507,3,demo,90,a-fork1,"",user_updated_repo,2012-08-01 03:19:21.260608
452 508,3,demo,34,a,"",user_commented_pull_request:16,2012-08-01 03:20:55.082899
452 508,3,demo,34,a,"",user_commented_pull_request:16,2012-08-01 03:20:55.082899
453 509,3,demo,34,a,"",user_closed_pull_request:16,2012-08-01 03:20:55.089597
453 509,3,demo,34,a,"",user_closed_pull_request:16,2012-08-01 03:20:55.089597
454 510,3,demo,34,a,"",user_commented_pull_request:17,2012-08-01 03:24:44.63976
454 510,3,demo,34,a,"",user_commented_pull_request:17,2012-08-01 03:24:44.63976
455 511,3,demo,41,fork-code-review-test1111111,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-01 18:56:56.755186
455 511,3,demo,41,fork-code-review-test1111111,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-01 18:56:56.755186
456 512,3,demo,41,fork-code-review-test1111111,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-01 18:57:03.502595
456 512,3,demo,41,fork-code-review-test1111111,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-01 18:57:03.502595
457 478,86,gurce,,aaa,"",started_following_repo,2012-07-29 11:19:09.137514
457 478,86,gurce,,aaa,"",started_following_repo,2012-07-29 11:19:09.137514
458 479,86,gurce,,aaa,"",user_created_repo,2012-07-29 11:19:09.151528
458 479,86,gurce,,aaa,"",user_created_repo,2012-07-29 11:19:09.151528
459 513,15,Vipous,25,My1,"",push_local:50e642196270635f02c5bd5c00e499dc187178df,2012-08-01 19:11:17.87993
459 513,15,Vipous,25,My1,"",push_local:50e642196270635f02c5bd5c00e499dc187178df,2012-08-01 19:11:17.87993
460 514,1,default,25,My1,95.24.51.243,pull,2012-08-01 19:15:28.508852
460 514,1,default,25,My1,95.24.51.243,pull,2012-08-01 19:15:28.508852
461 515,15,Vipous,25,my1,"",user_updated_repo,2012-08-01 19:32:20.993611
461 515,15,Vipous,25,my1,"",user_updated_repo,2012-08-01 19:32:20.993611
462 516,15,Vipous,103,my2,"",started_following_repo,2012-08-01 19:38:38.060511
462 516,15,Vipous,103,my2,"",started_following_repo,2012-08-01 19:38:38.060511
463 517,15,Vipous,103,my2,"",user_created_repo,2012-08-01 19:38:38.069864
463 517,15,Vipous,103,my2,"",user_created_repo,2012-08-01 19:38:38.069864
464 518,15,Vipous,103,my2,"",user_updated_repo,2012-08-01 19:45:16.160287
464 518,15,Vipous,103,my2,"",user_updated_repo,2012-08-01 19:45:16.160287
465 519,15,Vipous,103,my2,"",user_updated_repo,2012-08-01 19:46:04.886008
465 519,15,Vipous,103,my2,"",user_updated_repo,2012-08-01 19:46:04.886008
466 520,15,Vipous,104,m3,"",started_following_repo,2012-08-01 19:46:48.535281
466 520,15,Vipous,104,m3,"",started_following_repo,2012-08-01 19:46:48.535281
467 521,15,Vipous,104,m3,"",user_created_repo,2012-08-01 19:46:48.549938
467 521,15,Vipous,104,m3,"",user_created_repo,2012-08-01 19:46:48.549938
468 522,15,Vipous,104,m3,"",user_updated_repo,2012-08-01 19:47:15.299734
468 522,15,Vipous,104,m3,"",user_updated_repo,2012-08-01 19:47:15.299734
469 523,95,vladest,105,group/MainCa,"",started_following_repo,2012-08-02 11:30:01.303239
469 523,95,vladest,105,group/MainCa,"",started_following_repo,2012-08-02 11:30:01.303239
470 524,95,vladest,105,group/MainCa,"",user_created_repo,2012-08-02 11:30:01.314496
470 524,95,vladest,105,group/MainCa,"",user_created_repo,2012-08-02 11:30:01.314496
471 525,95,vladest,105,group/MainCa,"",push_local:d43c6b4b865d2c37ac9bb8300ed2594f5c7bfac1,2012-08-02 11:32:35.723828
471 525,95,vladest,105,group/MainCa,"",push_local:d43c6b4b865d2c37ac9bb8300ed2594f5c7bfac1,2012-08-02 11:32:35.723828
472 526,95,vladest,106,group/MainCa1,"",started_following_repo,2012-08-02 12:20:15.170113
472 526,95,vladest,106,group/MainCa1,"",started_following_repo,2012-08-02 12:20:15.170113
473 527,95,vladest,106,group/MainCa1,"",user_created_repo,2012-08-02 12:20:15.178842
473 527,95,vladest,106,group/MainCa1,"",user_created_repo,2012-08-02 12:20:15.178842
474 528,97,Cykooz,107,TestRep,"",started_following_repo,2012-08-02 14:19:22.221295
474 528,97,Cykooz,107,TestRep,"",started_following_repo,2012-08-02 14:19:22.221295
475 529,97,Cykooz,107,TestRep,"",user_created_repo,2012-08-02 14:19:22.233832
475 529,97,Cykooz,107,TestRep,"",user_created_repo,2012-08-02 14:19:22.233832
476 530,97,Cykooz,107,TestRep,"",push_local:d15f2b728cbe3d99cdb87847252245defb65af97,2012-08-02 14:20:54.178448
476 530,97,Cykooz,107,TestRep,"",push_local:d15f2b728cbe3d99cdb87847252245defb65af97,2012-08-02 14:20:54.178448
477 532,3,demo,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-08-03 10:06:58.707278
477 532,3,demo,1,test,"",user_commented_revision:ef02269209cd431c0cd0ee929ba37ae895651d69,2012-08-03 10:06:58.707278
478 533,3,demo,108,pouet_toto,"",started_following_repo,2012-08-03 10:39:59.081678
478 533,3,demo,108,pouet_toto,"",started_following_repo,2012-08-03 10:39:59.081678
479 534,3,demo,108,pouet_toto,"",user_created_repo,2012-08-03 10:39:59.093405
479 534,3,demo,108,pouet_toto,"",user_created_repo,2012-08-03 10:39:59.093405
480 535,1,default,107,TestRep,195.238.92.121,pull,2012-08-03 17:59:06.989454
480 535,1,default,107,TestRep,195.238.92.121,pull,2012-08-03 17:59:06.989454
481 538,3,demo,110,django,"",started_following_repo,2012-08-03 19:18:45.155897
481 538,3,demo,110,django,"",started_following_repo,2012-08-03 19:18:45.155897
482 539,3,demo,110,django,"",user_created_repo,2012-08-03 19:18:45.172636
482 539,3,demo,110,django,"",user_created_repo,2012-08-03 19:18:45.172636
483 540,3,demo,90,a-fork1,"",user_commented_revision:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-08-03 19:33:48.041371
483 540,3,demo,90,a-fork1,"",user_commented_revision:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-08-03 19:33:48.041371
484 541,102,floris1988,111,TestSpecialChars-ï,"",started_following_repo,2012-08-04 18:53:17.2228
484 541,102,floris1988,111,TestSpecialChars-ï,"",started_following_repo,2012-08-04 18:53:17.2228
485 542,102,floris1988,111,TestSpecialChars-ï,"",user_created_repo,2012-08-04 18:53:17.234721
485 542,102,floris1988,111,TestSpecialChars-ï,"",user_created_repo,2012-08-04 18:53:17.234721
486 543,102,floris1988,111,TestSpecialChars-ï,"",user_updated_repo,2012-08-04 18:53:50.060979
486 543,102,floris1988,111,TestSpecialChars-ï,"",user_updated_repo,2012-08-04 18:53:50.060979
487 544,102,floris1988,111,TestSpecialChars-ï,"",user_updated_repo,2012-08-04 18:55:53.495862
487 544,102,floris1988,111,TestSpecialChars-ï,"",user_updated_repo,2012-08-04 18:55:53.495862
488 545,3,demo,112,segaja_test,"",started_following_repo,2012-08-04 19:04:06.239802
488 545,3,demo,112,segaja_test,"",started_following_repo,2012-08-04 19:04:06.239802
489 546,3,demo,112,segaja_test,"",user_created_repo,2012-08-04 19:04:06.253287
489 546,3,demo,112,segaja_test,"",user_created_repo,2012-08-04 19:04:06.253287
490 547,3,demo,112,segaja_test,92.224.13.159,push:42e459600bdbd38d1faf6eaa10c7e01c56cd10f9,2012-08-04 19:29:14.690831
490 547,3,demo,112,segaja_test,92.224.13.159,push:42e459600bdbd38d1faf6eaa10c7e01c56cd10f9,2012-08-04 19:29:14.690831
491 548,1,default,112,segaja_test,92.224.252.14,pull,2012-08-04 19:34:36.973664
491 548,1,default,112,segaja_test,92.224.252.14,pull,2012-08-04 19:34:36.973664
492 549,3,demo,113,fork-big-project-test,"",started_following_repo,2012-08-05 02:55:27.385395
492 549,3,demo,113,fork-big-project-test,"",started_following_repo,2012-08-05 02:55:27.385395
493 550,3,demo,32,big-project,"",user_forked_repo:fork-big-project-test,2012-08-05 02:55:27.414409
493 550,3,demo,32,big-project,"",user_forked_repo:fork-big-project-test,2012-08-05 02:55:27.414409
494 551,3,demo,113,fork-big-project-test,"",user_created_fork:fork-big-project-test,2012-08-05 02:55:27.4288
494 551,3,demo,113,fork-big-project-test,"",user_created_fork:fork-big-project-test,2012-08-05 02:55:27.4288
495 552,2,admin,,zaraza,"",admin_deleted_repo,2012-08-05 13:27:42.970283
495 552,2,admin,,zaraza,"",admin_deleted_repo,2012-08-05 13:27:42.970283
496 553,2,admin,,asd,"",admin_deleted_repo,2012-08-05 13:28:00.428749
496 553,2,admin,,asd,"",admin_deleted_repo,2012-08-05 13:28:00.428749
497 536,3,demo,,short,"",started_following_repo,2012-08-03 18:03:15.665115
497 536,3,demo,,short,"",started_following_repo,2012-08-03 18:03:15.665115
498 537,3,demo,,short,"",user_created_repo,2012-08-03 18:03:15.67758
498 537,3,demo,,short,"",user_created_repo,2012-08-03 18:03:15.67758
499 554,2,admin,,short,"",admin_deleted_repo,2012-08-05 13:28:31.888167
499 554,2,admin,,short,"",admin_deleted_repo,2012-08-05 13:28:31.888167
500 555,2,admin,,rune-test,"",admin_deleted_repo,2012-08-05 13:28:37.66319
500 555,2,admin,,rune-test,"",admin_deleted_repo,2012-08-05 13:28:37.66319
501 556,2,admin,,test2,"",admin_deleted_repo,2012-08-05 13:29:14.388401
501 556,2,admin,,test2,"",admin_deleted_repo,2012-08-05 13:29:14.388401
502 502,3,demo,,test1771,"",started_following_repo,2012-07-31 23:21:17.003832
502 502,3,demo,,test1771,"",started_following_repo,2012-07-31 23:21:17.003832
503 503,3,demo,,test1771,"",user_created_repo,2012-07-31 23:21:17.01404
503 503,3,demo,,test1771,"",user_created_repo,2012-07-31 23:21:17.01404
504 504,3,demo,,test1771,"",user_updated_repo,2012-07-31 23:22:03.144832
504 504,3,demo,,test1771,"",user_updated_repo,2012-07-31 23:22:03.144832
505 505,3,demo,,test1771,"",user_updated_repo,2012-07-31 23:22:24.167363
505 505,3,demo,,test1771,"",user_updated_repo,2012-07-31 23:22:24.167363
506 557,2,admin,,test1771,"",admin_deleted_repo,2012-08-05 13:29:38.632652
506 557,2,admin,,test1771,"",admin_deleted_repo,2012-08-05 13:29:38.632652
507 558,2,admin,,aaa,"",admin_deleted_repo,2012-08-05 13:30:03.546834
507 558,2,admin,,aaa,"",admin_deleted_repo,2012-08-05 13:30:03.546834
508 359,3,demo,,group/aaaaa,"",started_following_repo,2012-07-21 03:38:35.138131
508 359,3,demo,,group/aaaaa,"",started_following_repo,2012-07-21 03:38:35.138131
509 360,3,demo,,group/aaaaa,"",user_created_repo,2012-07-21 03:38:35.15336
509 360,3,demo,,group/aaaaa,"",user_created_repo,2012-07-21 03:38:35.15336
510 361,3,demo,,group/aaaaa,"",stopped_following_repo,2012-07-21 03:40:17.083354
510 361,3,demo,,group/aaaaa,"",stopped_following_repo,2012-07-21 03:40:17.083354
511 559,2,admin,,group/aaaaa,"",admin_deleted_repo,2012-08-05 13:30:13.234414
511 559,2,admin,,group/aaaaa,"",admin_deleted_repo,2012-08-05 13:30:13.234414
512 560,2,admin,,group/aaaaaa1,"",admin_deleted_repo,2012-08-05 13:30:18.727572
512 560,2,admin,,group/aaaaaa1,"",admin_deleted_repo,2012-08-05 13:30:18.727572
513 561,3,demo,114,repo1,"",started_following_repo,2012-08-05 22:24:30.710387
513 561,3,demo,114,repo1,"",started_following_repo,2012-08-05 22:24:30.710387
514 562,3,demo,114,repo1,"",user_created_repo,2012-08-05 22:24:30.720533
514 562,3,demo,114,repo1,"",user_created_repo,2012-08-05 22:24:30.720533
515 563,3,demo,114,repo1,"",user_updated_repo,2012-08-05 22:25:03.129876
515 563,3,demo,114,repo1,"",user_updated_repo,2012-08-05 22:25:03.129876
516 564,3,demo,114,group/repo1,"",user_updated_repo,2012-08-06 01:33:29.413213
516 564,3,demo,114,group/repo1,"",user_updated_repo,2012-08-06 01:33:29.413213
517 565,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-08-06 12:41:54.182248
517 565,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-08-06 12:41:54.182248
518 566,3,demo,115,seva,"",started_following_repo,2012-08-06 13:50:43.115804
518 566,3,demo,115,seva,"",started_following_repo,2012-08-06 13:50:43.115804
519 567,3,demo,115,seva,"",user_created_repo,2012-08-06 13:50:43.129954
519 567,3,demo,115,seva,"",user_created_repo,2012-08-06 13:50:43.129954
520 568,3,demo,115,seva,94.28.52.54,push:06a5a7a52876f01f458a2f816320bab5bafc8cb7,2012-08-06 14:05:42.593075
520 568,3,demo,115,seva,94.28.52.54,push:06a5a7a52876f01f458a2f816320bab5bafc8cb7,2012-08-06 14:05:42.593075
521 569,3,demo,116,sr_Types,"",started_following_repo,2012-08-06 14:10:07.910072
521 569,3,demo,116,sr_Types,"",started_following_repo,2012-08-06 14:10:07.910072
522 570,3,demo,116,sr_Types,"",user_created_repo,2012-08-06 14:10:07.917777
522 570,3,demo,116,sr_Types,"",user_created_repo,2012-08-06 14:10:07.917777
523 571,3,demo,116,sr_Types,94.28.52.54,"push:82f049910f50a5f21af4e097ff143cffc40ed24b,744a1af870e28684381d6dbc49fc3ee8e84bd037,c4e4c1f60bf9c35ddb6b3b244e3ac653bf9013fb,6243a66ba6f45ae7019b785e34c87415c75f0100,f98dabdf9d6721c9cb2ce951473602261b197572",2012-08-06 14:11:06.205283
523 571,3,demo,116,sr_Types,94.28.52.54,"push:82f049910f50a5f21af4e097ff143cffc40ed24b,744a1af870e28684381d6dbc49fc3ee8e84bd037,c4e4c1f60bf9c35ddb6b3b244e3ac653bf9013fb,6243a66ba6f45ae7019b785e34c87415c75f0100,f98dabdf9d6721c9cb2ce951473602261b197572",2012-08-06 14:11:06.205283
524 572,3,demo,117,group/PersTest,"",started_following_repo,2012-08-07 13:56:12.405578
524 572,3,demo,117,group/PersTest,"",started_following_repo,2012-08-07 13:56:12.405578
525 573,3,demo,117,group/PersTest,"",user_created_repo,2012-08-07 13:56:12.425432
525 573,3,demo,117,group/PersTest,"",user_created_repo,2012-08-07 13:56:12.425432
526 574,3,demo,118,group/fork-PersTest11111,"",started_following_repo,2012-08-07 16:19:34.151798
526 574,3,demo,118,group/fork-PersTest11111,"",started_following_repo,2012-08-07 16:19:34.151798
527 575,3,demo,117,group/PersTest,"",user_forked_repo:group/fork-PersTest11111,2012-08-07 16:19:35.508635
527 575,3,demo,117,group/PersTest,"",user_forked_repo:group/fork-PersTest11111,2012-08-07 16:19:35.508635
528 576,3,demo,118,group/fork-PersTest11111,"",user_created_fork:group/fork-PersTest11111,2012-08-07 16:19:35.521466
528 576,3,demo,118,group/fork-PersTest11111,"",user_created_fork:group/fork-PersTest11111,2012-08-07 16:19:35.521466
529 577,3,demo,119,group/fork-PersTesttest23,"",started_following_repo,2012-08-07 16:21:38.613229
529 577,3,demo,119,group/fork-PersTesttest23,"",started_following_repo,2012-08-07 16:21:38.613229
530 578,3,demo,117,group/PersTest,"",user_forked_repo:group/fork-PersTesttest23,2012-08-07 16:21:39.912103
530 578,3,demo,117,group/PersTest,"",user_forked_repo:group/fork-PersTesttest23,2012-08-07 16:21:39.912103
531 579,3,demo,119,group/fork-PersTesttest23,"",user_created_fork:group/fork-PersTesttest23,2012-08-07 16:21:39.925959
531 579,3,demo,119,group/fork-PersTesttest23,"",user_created_fork:group/fork-PersTesttest23,2012-08-07 16:21:39.925959
532 580,3,demo,120,group/clojure.git,"",started_following_repo,2012-08-07 16:23:44.191686
532 580,3,demo,120,group/clojure.git,"",started_following_repo,2012-08-07 16:23:44.191686
533 581,3,demo,120,group/clojure.git,"",user_created_repo,2012-08-07 16:23:44.209175
533 581,3,demo,120,group/clojure.git,"",user_created_repo,2012-08-07 16:23:44.209175
534 582,3,demo,121,group/fork-clojure.git11111,"",started_following_repo,2012-08-07 16:23:59.92049
534 582,3,demo,121,group/fork-clojure.git11111,"",started_following_repo,2012-08-07 16:23:59.92049
535 583,3,demo,120,group/clojure.git,"",user_forked_repo:group/fork-clojure.git11111,2012-08-07 16:24:01.272504
535 583,3,demo,120,group/clojure.git,"",user_forked_repo:group/fork-clojure.git11111,2012-08-07 16:24:01.272504
536 584,3,demo,121,group/fork-clojure.git11111,"",user_created_fork:group/fork-clojure.git11111,2012-08-07 16:24:01.286295
536 584,3,demo,121,group/fork-clojure.git11111,"",user_created_fork:group/fork-clojure.git11111,2012-08-07 16:24:01.286295
537 585,3,demo,121,group/fork-clojure.git11111,"",user_updated_repo,2012-08-07 16:25:08.111886
537 585,3,demo,121,group/fork-clojure.git11111,"",user_updated_repo,2012-08-07 16:25:08.111886
538 586,3,demo,117,group/PersTest,"",user_commented_revision:3823d29c041a56af5d798e1bf308169635b307b2,2012-08-07 16:33:30.109982
538 586,3,demo,117,group/PersTest,"",user_commented_revision:3823d29c041a56af5d798e1bf308169635b307b2,2012-08-07 16:33:30.109982
539 587,3,demo,117,group/PersTest,"",user_commented_revision:3823d29c041a56af5d798e1bf308169635b307b2,2012-08-07 16:33:47.039431
539 587,3,demo,117,group/PersTest,"",user_commented_revision:3823d29c041a56af5d798e1bf308169635b307b2,2012-08-07 16:33:47.039431
540 588,3,demo,117,group/PersTest,"",push_local:cc8900b3722b55c4435ccf5c14cf4883c62ebdb1,2012-08-07 16:34:33.016369
540 588,3,demo,117,group/PersTest,"",push_local:cc8900b3722b55c4435ccf5c14cf4883c62ebdb1,2012-08-07 16:34:33.016369
541 589,1,default,34,a,75.69.241.64,pull,2012-08-07 16:45:32.904556
541 589,1,default,34,a,75.69.241.64,pull,2012-08-07 16:45:32.904556
542 590,3,demo,122,amab,"",started_following_repo,2012-08-08 18:51:41.487459
542 590,3,demo,122,amab,"",started_following_repo,2012-08-08 18:51:41.487459
543 591,3,demo,122,amab,"",user_created_repo,2012-08-08 18:51:41.502954
543 591,3,demo,122,amab,"",user_created_repo,2012-08-08 18:51:41.502954
544 592,3,demo,123,fork-amab,"",started_following_repo,2012-08-08 18:52:54.7185
544 592,3,demo,123,fork-amab,"",started_following_repo,2012-08-08 18:52:54.7185
545 593,3,demo,122,amab,"",user_forked_repo:fork-amab,2012-08-08 18:52:54.735201
545 593,3,demo,122,amab,"",user_forked_repo:fork-amab,2012-08-08 18:52:54.735201
546 594,3,demo,123,fork-amab,"",user_created_fork:fork-amab,2012-08-08 18:52:54.747165
546 594,3,demo,123,fork-amab,"",user_created_fork:fork-amab,2012-08-08 18:52:54.747165
547 595,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",started_following_repo,2012-08-08 20:20:04.849671
547 595,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",started_following_repo,2012-08-08 20:20:04.849671
548 596,108,dukeofgaming,99,another-fork-to-check-code-review,"",user_forked_repo:fork-another-fork-to-check-code-review,2012-08-08 20:20:04.90856
548 596,108,dukeofgaming,99,another-fork-to-check-code-review,"",user_forked_repo:fork-another-fork-to-check-code-review,2012-08-08 20:20:04.90856
549 597,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",user_created_fork:fork-another-fork-to-check-code-review,2012-08-08 20:20:04.916268
549 597,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",user_created_fork:fork-another-fork-to-check-code-review,2012-08-08 20:20:04.916268
550 598,108,dukeofgaming,125,test-to-end-all-tests,"",started_following_repo,2012-08-08 20:24:44.691886
550 598,108,dukeofgaming,125,test-to-end-all-tests,"",started_following_repo,2012-08-08 20:24:44.691886
551 599,108,dukeofgaming,125,test-to-end-all-tests,"",user_created_repo,2012-08-08 20:24:44.701816
551 599,108,dukeofgaming,125,test-to-end-all-tests,"",user_created_repo,2012-08-08 20:24:44.701816
552 600,108,dukeofgaming,125,test-to-end-all-tests,"",push_local:fb4eb182028a674ae250430c04305e9b3fbe508e,2012-08-08 20:26:27.345121
552 600,108,dukeofgaming,125,test-to-end-all-tests,"",push_local:fb4eb182028a674ae250430c04305e9b3fbe508e,2012-08-08 20:26:27.345121
553 601,108,dukeofgaming,34,a,"",user_commented_pull_request:17,2012-08-08 21:57:59.006296
553 601,108,dukeofgaming,34,a,"",user_commented_pull_request:17,2012-08-08 21:57:59.006296
554 602,109,StrangeWill,126,StrangeWill-Test,"",started_following_repo,2012-08-09 02:34:52.271872
554 602,109,StrangeWill,126,StrangeWill-Test,"",started_following_repo,2012-08-09 02:34:52.271872
555 603,109,StrangeWill,126,StrangeWill-Test,"",user_created_repo,2012-08-09 02:34:52.282934
555 603,109,StrangeWill,126,StrangeWill-Test,"",user_created_repo,2012-08-09 02:34:52.282934
556 604,109,StrangeWill,126,StrangeWill-Test,"",user_updated_repo,2012-08-09 02:35:02.383584
556 604,109,StrangeWill,126,StrangeWill-Test,"",user_updated_repo,2012-08-09 02:35:02.383584
557 605,109,StrangeWill,126,StrangeWill-Test,"",user_updated_repo,2012-08-09 02:35:06.402314
557 605,109,StrangeWill,126,StrangeWill-Test,"",user_updated_repo,2012-08-09 02:35:06.402314
558 606,109,StrangeWill,126,StrangeWill-Test,"",push_local:9c53f740e08b8bbc51bb3c44b1daab9f52287d3a,2012-08-09 02:35:43.942575
558 606,109,StrangeWill,126,StrangeWill-Test,"",push_local:9c53f740e08b8bbc51bb3c44b1daab9f52287d3a,2012-08-09 02:35:43.942575
559 607,109,StrangeWill,126,StrangeWill-Test,"",user_commented_pull_request:19,2012-08-09 02:36:48.962911
559 607,109,StrangeWill,126,StrangeWill-Test,"",user_commented_pull_request:19,2012-08-09 02:36:48.962911
560 608,109,StrangeWill,126,StrangeWill-Test,"",user_closed_pull_request:19,2012-08-09 02:36:48.968935
560 608,109,StrangeWill,126,StrangeWill-Test,"",user_closed_pull_request:19,2012-08-09 02:36:48.968935
561 609,3,demo,1,test,"",user_commented_pull_request:20,2012-08-10 11:23:48.112425
561 609,3,demo,1,test,"",user_commented_pull_request:20,2012-08-10 11:23:48.112425
562 610,3,demo,1,test,"",user_closed_pull_request:20,2012-08-10 11:23:48.122186
562 610,3,demo,1,test,"",user_closed_pull_request:20,2012-08-10 11:23:48.122186
563 611,3,demo,8,Test_Repo,"",user_commented_pull_request:12,2012-08-10 11:29:38.483128
563 611,3,demo,8,Test_Repo,"",user_commented_pull_request:12,2012-08-10 11:29:38.483128
564 612,3,demo,8,Test_Repo,"",user_commented_pull_request:12,2012-08-10 11:29:48.326018
564 612,3,demo,8,Test_Repo,"",user_commented_pull_request:12,2012-08-10 11:29:48.326018
565 613,3,demo,8,Test_Repo,"",user_closed_pull_request:12,2012-08-10 11:29:48.336563
565 613,3,demo,8,Test_Repo,"",user_closed_pull_request:12,2012-08-10 11:29:48.336563
566 614,3,demo,34,a,"",user_commented_pull_request:18,2012-08-10 11:32:01.569982
566 614,3,demo,34,a,"",user_commented_pull_request:18,2012-08-10 11:32:01.569982
567 615,2,admin,,"","",admin_created_users_group:group,2012-08-10 20:13:05.655137
567 615,2,admin,,"","",admin_created_users_group:group,2012-08-10 20:13:05.655137
568 616,3,demo,122,amab,"",push_local:86b1fc3a3f5dc193814327817d2274dc2e25aa74,2012-08-11 05:48:36.958893
568 616,3,demo,122,amab,"",push_local:86b1fc3a3f5dc193814327817d2274dc2e25aa74,2012-08-11 05:48:36.958893
569 617,3,demo,122,amab,"",user_commented_revision:86b1fc3a3f5dc193814327817d2274dc2e25aa74,2012-08-11 05:49:10.966918
569 617,3,demo,122,amab,"",user_commented_revision:86b1fc3a3f5dc193814327817d2274dc2e25aa74,2012-08-11 05:49:10.966918
570 618,3,demo,122,amab,"",push_local:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-08-11 05:50:15.022811
570 618,3,demo,122,amab,"",push_local:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-08-11 05:50:15.022811
571 619,3,demo,127,my-super-rep,"",started_following_repo,2012-08-11 12:30:55.461553
571 619,3,demo,127,my-super-rep,"",started_following_repo,2012-08-11 12:30:55.461553
572 620,3,demo,127,my-super-rep,"",user_created_repo,2012-08-11 12:30:55.490584
572 620,3,demo,127,my-super-rep,"",user_created_repo,2012-08-11 12:30:55.490584
573 621,3,demo,127,my-super-rep,"",push_local:5d80e28538141e322b317168e2367fb03178d58c,2012-08-11 12:32:07.883859
573 621,3,demo,127,my-super-rep,"",push_local:5d80e28538141e322b317168e2367fb03178d58c,2012-08-11 12:32:07.883859
574 622,3,demo,127,my-super-rep,"",user_updated_repo,2012-08-11 12:33:26.213226
574 622,3,demo,127,my-super-rep,"",user_updated_repo,2012-08-11 12:33:26.213226
575 623,3,demo,124,fork-another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-08-11 15:07:59.546001
575 623,3,demo,124,fork-another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-08-11 15:07:59.546001
576 624,3,demo,29,otro-test,"",push_local:84da67001150cd0bf3ef744c286bcc432ea21bd4,2012-08-11 15:33:05.169706
576 624,3,demo,29,otro-test,"",push_local:84da67001150cd0bf3ef744c286bcc432ea21bd4,2012-08-11 15:33:05.169706
577 625,1,default,81,FS_dummy,66.85.224.48,pull,2012-08-11 19:31:31.664606
577 625,1,default,81,FS_dummy,66.85.224.48,pull,2012-08-11 19:31:31.664606
578 626,3,demo,128,testprivate,"",started_following_repo,2012-08-12 10:25:42.265395
578 626,3,demo,128,testprivate,"",started_following_repo,2012-08-12 10:25:42.265395
579 627,3,demo,128,testprivate,"",user_created_repo,2012-08-12 10:25:42.278839
579 627,3,demo,128,testprivate,"",user_created_repo,2012-08-12 10:25:42.278839
580 628,3,demo,128,testprivate,"",user_updated_repo,2012-08-12 10:27:29.467173
580 628,3,demo,128,testprivate,"",user_updated_repo,2012-08-12 10:27:29.467173
581 629,3,demo,128,testprivate,"",user_updated_repo,2012-08-12 10:28:09.878656
581 629,3,demo,128,testprivate,"",user_updated_repo,2012-08-12 10:28:09.878656
582 630,3,demo,128,group/testprivate,"",user_updated_repo,2012-08-12 10:29:00.702759
582 630,3,demo,128,group/testprivate,"",user_updated_repo,2012-08-12 10:29:00.702759
583 631,3,demo,128,group/testprivate,"",push_local:a7e9cdbd374255258a2d470dae64142c62577e62,2012-08-12 10:32:28.350191
583 631,3,demo,128,group/testprivate,"",push_local:a7e9cdbd374255258a2d470dae64142c62577e62,2012-08-12 10:32:28.350191
584 632,3,demo,54,glib,"",user_commented_revision:eda1735029e01d6391fe8a4cde6c5688727c8183,2012-08-12 15:21:32.004992
584 632,3,demo,54,glib,"",user_commented_revision:eda1735029e01d6391fe8a4cde6c5688727c8183,2012-08-12 15:21:32.004992
585 633,3,demo,54,glib,"",user_commented_revision:eda1735029e01d6391fe8a4cde6c5688727c8183,2012-08-12 15:21:56.235395
585 633,3,demo,54,glib,"",user_commented_revision:eda1735029e01d6391fe8a4cde6c5688727c8183,2012-08-12 15:21:56.235395
586 634,3,demo,129,dvorak,"",started_following_repo,2012-08-12 15:23:37.292086
586 634,3,demo,129,dvorak,"",started_following_repo,2012-08-12 15:23:37.292086
587 635,3,demo,129,dvorak,"",user_created_repo,2012-08-12 15:23:37.302785
587 635,3,demo,129,dvorak,"",user_created_repo,2012-08-12 15:23:37.302785
588 636,3,demo,129,dvorak,202.147.201.173,pull,2012-08-12 15:24:08.62022
588 636,3,demo,129,dvorak,202.147.201.173,pull,2012-08-12 15:24:08.62022
589 637,3,demo,130,x,"",started_following_repo,2012-08-12 23:37:03.115333
589 637,3,demo,130,x,"",started_following_repo,2012-08-12 23:37:03.115333
590 638,3,demo,130,x,"",user_created_repo,2012-08-12 23:37:03.130599
590 638,3,demo,130,x,"",user_created_repo,2012-08-12 23:37:03.130599
591 639,3,demo,124,fork-another-fork-to-check-code-review,"",user_commented_revision:8b7cd9a998f0f4ec47cf75b59b3d2c08167c3cf7,2012-08-12 23:39:33.305222
591 639,3,demo,124,fork-another-fork-to-check-code-review,"",user_commented_revision:8b7cd9a998f0f4ec47cf75b59b3d2c08167c3cf7,2012-08-12 23:39:33.305222
592 640,3,demo,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-08-13 05:24:22.678285
592 640,3,demo,44,diff-test,"",user_commented_revision:50daf150549b8d48676889dcb713f1f4e0e4bc9d,2012-08-13 05:24:22.678285
593 641,3,demo,123,fork-amab,"",push_local:6a6a5d929be9b4929041627d35f18627d9418aa5,2012-08-13 10:53:50.793419
593 641,3,demo,123,fork-amab,"",push_local:6a6a5d929be9b4929041627d35f18627d9418aa5,2012-08-13 10:53:50.793419
594 642,1,default,57,SuperProject,128.237.226.40,pull,2012-08-13 16:07:22.373945
594 642,1,default,57,SuperProject,128.237.226.40,pull,2012-08-13 16:07:22.373945
595 643,3,demo,34,a,"",user_commented_pull_request:24,2012-08-13 19:43:04.754874
595 643,3,demo,34,a,"",user_commented_pull_request:24,2012-08-13 19:43:04.754874
596 644,3,demo,34,a,"",user_closed_pull_request:24,2012-08-13 19:43:04.765323
596 644,3,demo,34,a,"",user_closed_pull_request:24,2012-08-13 19:43:04.765323
597 645,3,demo,34,a,"",user_commented_pull_request:25,2012-08-13 19:45:34.763703
597 645,3,demo,34,a,"",user_commented_pull_request:25,2012-08-13 19:45:34.763703
598 646,3,demo,34,a,"",user_closed_pull_request:25,2012-08-13 19:45:34.769014
598 646,3,demo,34,a,"",user_closed_pull_request:25,2012-08-13 19:45:34.769014
599 647,3,demo,131,group/test-v,"",started_following_repo,2012-08-13 19:46:36.628573
599 647,3,demo,131,group/test-v,"",started_following_repo,2012-08-13 19:46:36.628573
600 648,3,demo,131,group/test-v,"",user_created_repo,2012-08-13 19:46:36.637409
600 648,3,demo,131,group/test-v,"",user_created_repo,2012-08-13 19:46:36.637409
601 649,3,demo,131,group/test-v,"",push_local:5528f3d665c9c9577670ec1e47428ec12686309e,2012-08-13 19:46:57.911585
601 649,3,demo,131,group/test-v,"",push_local:5528f3d665c9c9577670ec1e47428ec12686309e,2012-08-13 19:46:57.911585
602 650,3,demo,132,test-alex,"",started_following_repo,2012-08-13 21:21:05.904895
602 650,3,demo,132,test-alex,"",started_following_repo,2012-08-13 21:21:05.904895
603 651,3,demo,132,test-alex,"",user_created_repo,2012-08-13 21:21:05.916732
603 651,3,demo,132,test-alex,"",user_created_repo,2012-08-13 21:21:05.916732
604 652,3,demo,132,test-alex,"",push_local:016bda6a3079ea1d69b6a309a9ecc61fe5b671df,2012-08-13 21:21:34.951309
604 652,3,demo,132,test-alex,"",push_local:016bda6a3079ea1d69b6a309a9ecc61fe5b671df,2012-08-13 21:21:34.951309
605 653,3,demo,132,test-alex,"",user_commented_revision:016bda6a3079ea1d69b6a309a9ecc61fe5b671df,2012-08-13 21:22:06.758798
605 653,3,demo,132,test-alex,"",user_commented_revision:016bda6a3079ea1d69b6a309a9ecc61fe5b671df,2012-08-13 21:22:06.758798
606 654,3,demo,132,test-alex,"",push_local:7f43f5167e26a3e43e6ad0ac6539ab4c8589a509,2012-08-13 21:22:18.07678
606 654,3,demo,132,test-alex,"",push_local:7f43f5167e26a3e43e6ad0ac6539ab4c8589a509,2012-08-13 21:22:18.07678
607 655,3,demo,132,test-alex,"",user_commented_revision:7f43f5167e26a3e43e6ad0ac6539ab4c8589a509,2012-08-13 21:22:39.209522
607 655,3,demo,132,test-alex,"",user_commented_revision:7f43f5167e26a3e43e6ad0ac6539ab4c8589a509,2012-08-13 21:22:39.209522
608 656,3,demo,132,test-alex,"",push_local:9b754ec30decff4c11c0f82522b7ec9dd732b738,2012-08-13 21:23:44.132906
608 656,3,demo,132,test-alex,"",push_local:9b754ec30decff4c11c0f82522b7ec9dd732b738,2012-08-13 21:23:44.132906
609 657,3,demo,132,test-alex,"",user_commented_revision:9b754ec30decff4c11c0f82522b7ec9dd732b738,2012-08-13 21:24:34.975113
609 657,3,demo,132,test-alex,"",user_commented_revision:9b754ec30decff4c11c0f82522b7ec9dd732b738,2012-08-13 21:24:34.975113
610 658,3,demo,132,test-alex,"",push_local:625c046f35779ccde8c2284ee60fda3d9598e8bb,2012-08-13 21:25:07.493234
610 658,3,demo,132,test-alex,"",push_local:625c046f35779ccde8c2284ee60fda3d9598e8bb,2012-08-13 21:25:07.493234
611 659,3,demo,132,test-alex,"",push_local:807dd6bb60f5eef82f7ffdd988dee3e0de4e44dc,2012-08-13 21:26:51.764858
611 659,3,demo,132,test-alex,"",push_local:807dd6bb60f5eef82f7ffdd988dee3e0de4e44dc,2012-08-13 21:26:51.764858
612 660,3,demo,132,test-alex,"",push_local:24224f94a8578508883f58982e10b0ffa83a98d6,2012-08-13 21:28:03.831471
612 660,3,demo,132,test-alex,"",push_local:24224f94a8578508883f58982e10b0ffa83a98d6,2012-08-13 21:28:03.831471
613 661,3,demo,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-08-14 18:40:46.618059
613 661,3,demo,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-08-14 18:40:46.618059
614 662,118,peso-rhodecode,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-08-14 18:58:56.536013
614 662,118,peso-xxx,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-08-14 18:58:56.536013
615 663,118,peso-rhodecode,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-08-14 18:59:58.982696
615 663,118,peso-xxx,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-08-14 18:59:58.982696
616 664,118,peso-rhodecode,133,tortoisehg,"",started_following_repo,2012-08-14 19:05:14.873877
616 664,118,peso-xxx,133,tortoisehg,"",started_following_repo,2012-08-14 19:05:14.873877
617 665,118,peso-rhodecode,133,tortoisehg,"",user_created_repo,2012-08-14 19:05:14.88921
617 665,118,peso-xxx,133,tortoisehg,"",user_created_repo,2012-08-14 19:05:14.88921
618 666,119,ricardona,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-08-14 21:20:28.585574
618 666,119,ricardona,39,fork-code-review-test,"",user_commented_revision:ac19ef61aab0b008acb5dac5d53457cbd278d927,2012-08-14 21:20:28.585574
619 667,3,demo,134,TestIM,"",started_following_repo,2012-08-14 22:23:05.22279
619 667,3,demo,134,TestIM,"",started_following_repo,2012-08-14 22:23:05.22279
620 668,3,demo,134,TestIM,"",user_created_repo,2012-08-14 22:23:05.235172
620 668,3,demo,134,TestIM,"",user_created_repo,2012-08-14 22:23:05.235172
621 669,3,demo,134,TestIM,216.16.228.6,push:b3b6cfdb515f13709b13f82d20efd74daaa11d91,2012-08-14 22:23:54.286624
621 669,3,demo,134,TestIM,216.16.228.6,push:b3b6cfdb515f13709b13f82d20efd74daaa11d91,2012-08-14 22:23:54.286624
622 670,3,demo,134,TestIM,216.16.228.6,push:9fb9ba572906576b2cc53ac227d503317f019556,2012-08-14 22:24:48.190215
622 670,3,demo,134,TestIM,216.16.228.6,push:9fb9ba572906576b2cc53ac227d503317f019556,2012-08-14 22:24:48.190215
623 671,3,demo,134,TestIM,"",user_commented_pull_request:26,2012-08-14 22:25:32.752851
623 671,3,demo,134,TestIM,"",user_commented_pull_request:26,2012-08-14 22:25:32.752851
624 672,3,demo,134,TestIM,"",user_commented_pull_request:26,2012-08-14 22:26:29.238006
624 672,3,demo,134,TestIM,"",user_commented_pull_request:26,2012-08-14 22:26:29.238006
625 673,3,demo,134,TestIM,"",user_closed_pull_request:26,2012-08-14 22:26:29.246245
625 673,3,demo,134,TestIM,"",user_closed_pull_request:26,2012-08-14 22:26:29.246245
626 674,3,demo,134,TestIM,216.16.228.6,push:55a4fabac6221f988a276ec34343b947dfbc8a1f,2012-08-14 22:35:56.966751
626 674,3,demo,134,TestIM,216.16.228.6,push:55a4fabac6221f988a276ec34343b947dfbc8a1f,2012-08-14 22:35:56.966751
627 676,120,asdfqwer,135,Asdf,"",started_following_repo,2012-08-15 01:25:41.462335
627 676,120,asdfqwer,135,Asdf,"",started_following_repo,2012-08-15 01:25:41.462335
628 677,120,asdfqwer,135,Asdf,"",user_created_repo,2012-08-15 01:25:41.473404
628 677,120,asdfqwer,135,Asdf,"",user_created_repo,2012-08-15 01:25:41.473404
629 678,120,asdfqwer,135,Asdf,"",push_local:e43db28406d1d0697f504af9bc2ae5c5b789bba3,2012-08-15 01:27:34.991
629 678,120,asdfqwer,135,Asdf,"",push_local:e43db28406d1d0697f504af9bc2ae5c5b789bba3,2012-08-15 01:27:34.991
630 679,3,demo,68,aaa-project,"",push_local:2babd97db425482a53b679956df09f89c3154a2c,2012-08-15 03:43:31.538895
630 679,3,demo,68,aaa-project,"",push_local:2babd97db425482a53b679956df09f89c3154a2c,2012-08-15 03:43:31.538895
631 680,3,demo,134,TestIM,"",user_commented_revision:55a4fabac6221f988a276ec34343b947dfbc8a1f,2012-08-15 14:30:08.564118
631 680,3,demo,134,TestIM,"",user_commented_revision:55a4fabac6221f988a276ec34343b947dfbc8a1f,2012-08-15 14:30:08.564118
632 681,3,demo,134,TestIM,"",user_commented_pull_request:27,2012-08-15 14:30:18.831116
632 681,3,demo,134,TestIM,"",user_commented_pull_request:27,2012-08-15 14:30:18.831116
633 682,3,demo,134,TestIM,"",user_closed_pull_request:27,2012-08-15 14:30:18.840491
633 682,3,demo,134,TestIM,"",user_closed_pull_request:27,2012-08-15 14:30:18.840491
634 683,3,demo,134,TestIM,216.16.228.6,push:bb4219af072d59cc4c3c43c378ed51fa4cf3c3ff,2012-08-15 15:07:41.727749
634 683,3,demo,134,TestIM,216.16.228.6,push:bb4219af072d59cc4c3c43c378ed51fa4cf3c3ff,2012-08-15 15:07:41.727749
635 684,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 16:55:41.900521
635 684,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 16:55:41.900521
636 685,3,demo,131,group/test-v,"",user_commented_revision:5528f3d665c9c9577670ec1e47428ec12686309e,2012-08-15 17:03:55.63388
636 685,3,demo,131,group/test-v,"",user_commented_revision:5528f3d665c9c9577670ec1e47428ec12686309e,2012-08-15 17:03:55.63388
637 686,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:08:29.295025
637 686,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:08:29.295025
638 687,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:29:40.060992
638 687,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:29:40.060992
639 688,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:33:06.514696
639 688,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:33:06.514696
640 689,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:35:45.952417
640 689,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:35:45.952417
641 690,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:45:52.189501
641 690,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 17:45:52.189501
642 691,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 18:15:01.771261
642 691,1,default,131,group/test-v,24.226.1.232,pull,2012-08-15 18:15:01.771261
643 692,3,demo,136,demorep,"",started_following_repo,2012-08-15 20:15:43.960506
643 692,3,demo,136,demorep,"",started_following_repo,2012-08-15 20:15:43.960506
644 693,3,demo,136,demorep,"",user_created_repo,2012-08-15 20:15:43.97291
644 693,3,demo,136,demorep,"",user_created_repo,2012-08-15 20:15:43.97291
645 694,3,demo,136,demorep,"",user_updated_repo,2012-08-15 20:16:36.235636
645 694,3,demo,136,demorep,"",user_updated_repo,2012-08-15 20:16:36.235636
646 695,116,japanfred,137,group/test,"",started_following_repo,2012-08-16 10:07:53.071203
646 695,116,japanfred,137,group/test,"",started_following_repo,2012-08-16 10:07:53.071203
647 696,116,japanfred,137,group/test,"",user_created_repo,2012-08-16 10:07:53.085238
647 696,116,japanfred,137,group/test,"",user_created_repo,2012-08-16 10:07:53.085238
648 697,3,demo,38,code-review-test,"",user_commented_revision:e780fb37168be5382148f5bc6fd420ae9771e947,2012-08-16 10:40:09.850092
648 697,3,demo,38,code-review-test,"",user_commented_revision:e780fb37168be5382148f5bc6fd420ae9771e947,2012-08-16 10:40:09.850092
649 698,3,demo,38,code-review-test,"",user_commented_revision:e780fb37168be5382148f5bc6fd420ae9771e947,2012-08-16 10:40:18.256489
649 698,3,demo,38,code-review-test,"",user_commented_revision:e780fb37168be5382148f5bc6fd420ae9771e947,2012-08-16 10:40:18.256489
650 699,3,demo,138,zzz,"",started_following_repo,2012-08-16 15:32:36.358347
650 699,3,demo,138,zzz,"",started_following_repo,2012-08-16 15:32:36.358347
651 700,3,demo,138,zzz,"",user_created_repo,2012-08-16 15:32:36.375112
651 700,3,demo,138,zzz,"",user_created_repo,2012-08-16 15:32:36.375112
652 701,3,demo,138,zzz,"",stopped_following_repo,2012-08-16 15:32:47.449322
652 701,3,demo,138,zzz,"",stopped_following_repo,2012-08-16 15:32:47.449322
653 702,3,demo,138,zzz,"",push_local:30c34a6a74a3acb1ac90da14cbf5afc195c06703,2012-08-16 15:35:02.210691
653 702,3,demo,138,zzz,"",push_local:30c34a6a74a3acb1ac90da14cbf5afc195c06703,2012-08-16 15:35:02.210691
654 703,3,demo,139,groupv,"",started_following_repo,2012-08-16 21:18:09.813691
654 703,3,demo,139,groupv,"",started_following_repo,2012-08-16 21:18:09.813691
655 704,3,demo,139,groupv,"",user_created_repo,2012-08-16 21:18:09.828768
655 704,3,demo,139,groupv,"",user_created_repo,2012-08-16 21:18:09.828768
656 705,3,demo,140,tryit,"",started_following_repo,2012-08-16 21:38:23.244914
656 705,3,demo,140,tryit,"",started_following_repo,2012-08-16 21:38:23.244914
657 706,3,demo,140,tryit,"",user_created_repo,2012-08-16 21:38:23.255027
657 706,3,demo,140,tryit,"",user_created_repo,2012-08-16 21:38:23.255027
658 707,3,demo,24,fork-Something,"",push_local:3e4a3d2cb39cc292337813a1b66886612967a12f,2012-08-17 08:46:15.254412
658 707,3,demo,24,fork-Something,"",push_local:3e4a3d2cb39cc292337813a1b66886612967a12f,2012-08-17 08:46:15.254412
659 708,125,thebodster,141,benltest,"",started_following_repo,2012-08-17 11:05:03.588299
659 708,125,thebodster,141,benltest,"",started_following_repo,2012-08-17 11:05:03.588299
660 709,125,thebodster,141,benltest,"",user_created_repo,2012-08-17 11:05:03.599788
660 709,125,thebodster,141,benltest,"",user_created_repo,2012-08-17 11:05:03.599788
661 710,125,thebodster,141,benltest,"",push_local:81058e0bbe3ff64719b622da3e3d4973a00aa17f,2012-08-17 11:06:28.089348
661 710,125,thebodster,141,benltest,"",push_local:81058e0bbe3ff64719b622da3e3d4973a00aa17f,2012-08-17 11:06:28.089348
662 711,3,demo,142,asd,"",started_following_repo,2012-08-17 17:05:25.612621
662 711,3,demo,142,asd,"",started_following_repo,2012-08-17 17:05:25.612621
663 712,3,demo,142,asd,"",user_created_repo,2012-08-17 17:05:25.623665
663 712,3,demo,142,asd,"",user_created_repo,2012-08-17 17:05:25.623665
664 713,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-20 11:55:54.518151
664 713,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-20 11:55:54.518151
665 714,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-20 11:56:13.790927
665 714,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-20 11:56:13.790927
666 715,3,demo,34,a,"",user_commented_revision:7ec6b566916b553f8ab92aaf1c993269b96b52ee,2012-08-20 12:15:53.217431
666 715,3,demo,34,a,"",user_commented_revision:7ec6b566916b553f8ab92aaf1c993269b96b52ee,2012-08-20 12:15:53.217431
667 716,3,demo,143,collabo-test,"",started_following_repo,2012-08-20 14:26:09.569571
667 716,3,demo,143,collabo-test,"",started_following_repo,2012-08-20 14:26:09.569571
668 717,3,demo,143,collabo-test,"",user_created_repo,2012-08-20 14:26:09.582085
668 717,3,demo,143,collabo-test,"",user_created_repo,2012-08-20 14:26:09.582085
669 718,3,demo,143,collabo-test,"",user_updated_repo,2012-08-20 14:32:35.45571
669 718,3,demo,143,collabo-test,"",user_updated_repo,2012-08-20 14:32:35.45571
670 719,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:34:12.224005
670 719,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:34:12.224005
671 720,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:38:00.881804
671 720,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:38:00.881804
672 721,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:38:55.248397
672 721,3,demo,143,group/collabo-test,"",user_updated_repo,2012-08-20 14:38:55.248397
673 722,131,edroi,144,group/testing_repo_ed,"",started_following_repo,2012-08-20 17:52:56.864724
673 722,131,edroi,144,group/testing_repo_ed,"",started_following_repo,2012-08-20 17:52:56.864724
674 723,131,edroi,144,group/testing_repo_ed,"",user_created_repo,2012-08-20 17:52:56.875807
674 723,131,edroi,144,group/testing_repo_ed,"",user_created_repo,2012-08-20 17:52:56.875807
675 724,3,demo,145,group/test001,"",started_following_repo,2012-08-21 12:04:31.34427
675 724,3,demo,145,group/test001,"",started_following_repo,2012-08-21 12:04:31.34427
676 725,3,demo,145,group/test001,"",user_created_repo,2012-08-21 12:04:31.361085
676 725,3,demo,145,group/test001,"",user_created_repo,2012-08-21 12:04:31.361085
677 726,3,demo,145,group/test001,"",push_local:be9945bab2129191dcfe7c3cf1530c953cb56250,2012-08-21 12:06:07.781578
677 726,3,demo,145,group/test001,"",push_local:be9945bab2129191dcfe7c3cf1530c953cb56250,2012-08-21 12:06:07.781578
678 727,2,admin,34,a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-08-21 12:09:46.857288
678 727,2,admin,34,a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-08-21 12:09:46.857288
679 728,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-22 10:25:41.344244
679 728,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-08-22 10:25:41.344244
680 729,3,demo,146,group/sjhasgdasgd,"",started_following_repo,2012-08-22 10:27:23.865563
680 729,3,demo,146,group/sjhasgdasgd,"",started_following_repo,2012-08-22 10:27:23.865563
681 730,3,demo,146,group/sjhasgdasgd,"",user_created_repo,2012-08-22 10:27:23.879703
681 730,3,demo,146,group/sjhasgdasgd,"",user_created_repo,2012-08-22 10:27:23.879703
682 731,134,asdf1234,,master-work,"",started_following_repo,2012-08-22 15:42:30.690987
682 731,134,asdf1234,,master-work,"",started_following_repo,2012-08-22 15:42:30.690987
683 732,134,asdf1234,,master-work,"",user_created_repo,2012-08-22 15:42:30.701316
683 732,134,asdf1234,,master-work,"",user_created_repo,2012-08-22 15:42:30.701316
684 733,134,asdf1234,,master-work,"",push_local:9a0c3c1f07d0d53f4578048e64ee7460540a8650,2012-08-22 15:42:51.105132
684 733,134,asdf1234,,master-work,"",push_local:9a0c3c1f07d0d53f4578048e64ee7460540a8650,2012-08-22 15:42:51.105132
685 734,134,asdf1234,,master-work,"",user_deleted_repo,2012-08-22 15:43:40.616875
685 734,134,asdf1234,,master-work,"",user_deleted_repo,2012-08-22 15:43:40.616875
686 740,3,demo,122,amab,"",user_commented_revision:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-08-22 15:55:10.054525
686 740,3,demo,122,amab,"",user_commented_revision:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-08-22 15:55:10.054525
687 735,134,asdf1234,,Master-Repo,"",started_following_repo,2012-08-22 15:44:00.955916
687 735,134,asdf1234,,Master-Repo,"",started_following_repo,2012-08-22 15:44:00.955916
688 736,134,asdf1234,,Master-Repo,"",user_created_repo,2012-08-22 15:44:00.969061
688 736,134,asdf1234,,Master-Repo,"",user_created_repo,2012-08-22 15:44:00.969061
689 737,134,asdf1234,,Master-Repo,198.47.12.251,push:511c6906e2dfcfdcf8e616705c4021250ce9317c,2012-08-22 15:47:31.882017
689 737,134,asdf1234,,Master-Repo,198.47.12.251,push:511c6906e2dfcfdcf8e616705c4021250ce9317c,2012-08-22 15:47:31.882017
690 738,134,asdf1234,,Master-Repo,"",user_updated_repo,2012-08-22 15:48:13.441863
690 738,134,asdf1234,,Master-Repo,"",user_updated_repo,2012-08-22 15:48:13.441863
691 739,134,asdf1234,,Master-Repo,198.47.12.251,push:650eab8084b7194849c714a7b8ee624ccb143961,2012-08-22 15:55:02.593373
691 739,134,asdf1234,,Master-Repo,198.47.12.251,push:650eab8084b7194849c714a7b8ee624ccb143961,2012-08-22 15:55:02.593373
692 741,1,default,,Master-Repo,176.9.28.203,pull,2012-08-22 15:55:55.777458
692 741,1,default,,Master-Repo,176.9.28.203,pull,2012-08-22 15:55:55.777458
693 749,134,asdf1234,,Master-Repo,"",user_deleted_repo,2012-08-22 16:04:45.631529
693 749,134,asdf1234,,Master-Repo,"",user_deleted_repo,2012-08-22 16:04:45.631529
694 746,134,asdf1234,,Master-repo-my-work,"",started_following_repo,2012-08-22 16:03:30.002885
694 746,134,asdf1234,,Master-repo-my-work,"",started_following_repo,2012-08-22 16:03:30.002885
695 747,134,asdf1234,,Master-repo-my-work,"",user_created_repo,2012-08-22 16:03:30.014977
695 747,134,asdf1234,,Master-repo-my-work,"",user_created_repo,2012-08-22 16:03:30.014977
696 748,134,asdf1234,,Master-repo-my-work,198.47.12.251,"push:511c6906e2dfcfdcf8e616705c4021250ce9317c,650eab8084b7194849c714a7b8ee624ccb143961,9e9ec10c23b2d7906221296e9b824e09aca4d135",2012-08-22 16:03:46.33517
696 748,134,asdf1234,,Master-repo-my-work,198.47.12.251,"push:511c6906e2dfcfdcf8e616705c4021250ce9317c,650eab8084b7194849c714a7b8ee624ccb143961,9e9ec10c23b2d7906221296e9b824e09aca4d135",2012-08-22 16:03:46.33517
697 750,134,asdf1234,,Master-repo-my-work,"",user_deleted_repo,2012-08-22 16:04:52.44082
697 750,134,asdf1234,,Master-repo-my-work,"",user_deleted_repo,2012-08-22 16:04:52.44082
698 742,134,asdf1234,,Master-Repo-work,"",started_following_repo,2012-08-22 15:55:55.950145
698 742,134,asdf1234,,Master-Repo-work,"",started_following_repo,2012-08-22 15:55:55.950145
699 743,134,asdf1234,,Master-Repo-work,"",user_created_repo,2012-08-22 15:55:55.964648
699 743,134,asdf1234,,Master-Repo-work,"",user_created_repo,2012-08-22 15:55:55.964648
700 744,1,default,,Master-Repo-work,198.47.12.251,pull,2012-08-22 15:56:19.314483
700 744,1,default,,Master-Repo-work,198.47.12.251,pull,2012-08-22 15:56:19.314483
701 745,134,asdf1234,,Master-Repo-work,198.47.12.251,push:9e9ec10c23b2d7906221296e9b824e09aca4d135,2012-08-22 15:57:15.289776
701 745,134,asdf1234,,Master-Repo-work,198.47.12.251,push:9e9ec10c23b2d7906221296e9b824e09aca4d135,2012-08-22 15:57:15.289776
702 751,134,asdf1234,,Master-Repo-work,"",user_deleted_repo,2012-08-22 16:05:17.555968
702 751,134,asdf1234,,Master-Repo-work,"",user_deleted_repo,2012-08-22 16:05:17.555968
703 752,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-22 16:55:58.931518
703 752,3,demo,90,a-fork1,"",user_commented_revision:5478c7d290bc0a14d9cefd79ed5722a87f3815d5,2012-08-22 16:55:58.931518
704 753,3,demo,88,group/project-z,"",user_updated_repo,2012-08-24 11:32:31.148489
704 753,3,demo,88,group/project-z,"",user_updated_repo,2012-08-24 11:32:31.148489
705 754,3,demo,151,group/test2,"",started_following_repo,2012-08-24 15:44:04.072312
705 754,3,demo,151,group/test2,"",started_following_repo,2012-08-24 15:44:04.072312
706 755,3,demo,151,group/test2,"",user_created_repo,2012-08-24 15:44:04.088381
706 755,3,demo,151,group/test2,"",user_created_repo,2012-08-24 15:44:04.088381
707 756,3,demo,34,a,"",push_local:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-08-24 17:15:46.470802
707 756,3,demo,34,a,"",push_local:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-08-24 17:15:46.470802
708 757,136,buk,152,group/create_test,"",started_following_repo,2012-08-25 06:40:04.917748
708 757,136,buk,152,group/create_test,"",started_following_repo,2012-08-25 06:40:04.917748
709 758,136,buk,152,group/create_test,"",user_created_repo,2012-08-25 06:40:04.931544
709 758,136,buk,152,group/create_test,"",user_created_repo,2012-08-25 06:40:04.931544
710 759,136,buk,121,group/fork-clojure.git11111,"",user_updated_repo,2012-08-25 06:42:39.902167
710 759,136,buk,121,group/fork-clojure.git11111,"",user_updated_repo,2012-08-25 06:42:39.902167
711 760,140,ryanewtaylor,153,my_test_repository,"",started_following_repo,2012-08-27 03:06:53.764986
711 760,140,ryanewtaylor,153,my_test_repository,"",started_following_repo,2012-08-27 03:06:53.764986
712 761,140,ryanewtaylor,153,my_test_repository,"",user_created_repo,2012-08-27 03:06:53.777712
712 761,140,ryanewtaylor,153,my_test_repository,"",user_created_repo,2012-08-27 03:06:53.777712
713 763,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:13:37.332593
713 763,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:13:37.332593
714 764,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:14:12.752967
714 764,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:14:12.752967
715 765,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:14:51.684298
715 765,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:adca53fe04fd153232ba0f2b0849593d7e7e66b3,2012-08-27 03:14:51.684298
716 766,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:6669f75a9cb677a2fda670b38b1144148ebeb962,2012-08-27 03:15:12.583256
716 766,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:6669f75a9cb677a2fda670b38b1144148ebeb962,2012-08-27 03:15:12.583256
717 767,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:df1618708e7fa0c17d5f6b45c20862c22ddec32e,2012-08-27 03:16:16.068448
717 767,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:df1618708e7fa0c17d5f6b45c20862c22ddec32e,2012-08-27 03:16:16.068448
718 768,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:df1618708e7fa0c17d5f6b45c20862c22ddec32e,2012-08-27 03:16:21.558262
718 768,140,ryanewtaylor,153,my_test_repository,"",user_commented_revision:df1618708e7fa0c17d5f6b45c20862c22ddec32e,2012-08-27 03:16:21.558262
719 769,2,admin,153,my_test_repository,"",user_commented_revision:6669f75a9cb677a2fda670b38b1144148ebeb962,2012-08-27 09:57:00.382062
719 769,2,admin,153,my_test_repository,"",user_commented_revision:6669f75a9cb677a2fda670b38b1144148ebeb962,2012-08-27 09:57:00.382062
720 770,141,asdf1234asdf,93,fork-a,"",user_commented_pull_request:29,2012-08-28 00:15:33.186954
720 770,141,asdf1234asdf,93,fork-a,"",user_commented_pull_request:29,2012-08-28 00:15:33.186954
721 771,141,asdf1234asdf,93,fork-a,"",user_closed_pull_request:29,2012-08-28 00:15:33.199962
721 771,141,asdf1234asdf,93,fork-a,"",user_closed_pull_request:29,2012-08-28 00:15:33.199962
722 773,143,demodemo1,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-08-29 09:44:47.573503
722 773,143,demodemo1,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-08-29 09:44:47.573503
723 774,3,demo,90,a-fork1,"",push_local:323f852b71ad55dde8b5134ecab08d38e478a2c5,2012-08-29 11:07:26.784421
723 774,3,demo,90,a-fork1,"",push_local:323f852b71ad55dde8b5134ecab08d38e478a2c5,2012-08-29 11:07:26.784421
724 775,116,japanfred,156,jf-main,"",started_following_repo,2012-08-29 14:07:27.6853
724 775,116,japanfred,156,jf-main,"",started_following_repo,2012-08-29 14:07:27.6853
725 776,116,japanfred,156,jf-main,"",user_created_repo,2012-08-29 14:07:27.698708
725 776,116,japanfred,156,jf-main,"",user_created_repo,2012-08-29 14:07:27.698708
726 777,116,japanfred,156,jf-main,"",push_local:3da6f8032b842427e3873733bc997cc38870028c,2012-08-29 14:08:26.649182
726 777,116,japanfred,156,jf-main,"",push_local:3da6f8032b842427e3873733bc997cc38870028c,2012-08-29 14:08:26.649182
727 778,116,japanfred,156,group/jf-main,"",user_updated_repo,2012-08-29 14:08:51.803377
727 778,116,japanfred,156,group/jf-main,"",user_updated_repo,2012-08-29 14:08:51.803377
728 779,145,fthomas64,157,group/fintest,"",started_following_repo,2012-08-29 21:54:55.55875
728 779,145,fthomas64,157,group/fintest,"",started_following_repo,2012-08-29 21:54:55.55875
729 780,145,fthomas64,157,group/fintest,"",user_created_repo,2012-08-29 21:54:55.5727
729 780,145,fthomas64,157,group/fintest,"",user_created_repo,2012-08-29 21:54:55.5727
730 781,145,fthomas64,157,group/fintest,"",user_updated_repo,2012-08-29 21:56:46.846955
730 781,145,fthomas64,157,group/fintest,"",user_updated_repo,2012-08-29 21:56:46.846955
731 782,3,demo,158,mytest001,"",started_following_repo,2012-08-29 23:38:29.423035
731 782,3,demo,158,mytest001,"",started_following_repo,2012-08-29 23:38:29.423035
732 783,3,demo,158,mytest001,"",user_created_repo,2012-08-29 23:38:29.434528
732 783,3,demo,158,mytest001,"",user_created_repo,2012-08-29 23:38:29.434528
733 784,3,demo,158,mytest001,"",user_updated_repo,2012-08-29 23:40:30.218875
733 784,3,demo,158,mytest001,"",user_updated_repo,2012-08-29 23:40:30.218875
734 785,3,demo,158,mytest001,"",push_local:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-29 23:56:55.750242
734 785,3,demo,158,mytest001,"",push_local:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-29 23:56:55.750242
735 786,3,demo,158,mytest001,"",user_commented_revision:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-29 23:57:17.769527
735 786,3,demo,158,mytest001,"",user_commented_revision:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-29 23:57:17.769527
736 787,3,demo,158,mytest001,"",user_commented_revision:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-30 00:00:06.214755
736 787,3,demo,158,mytest001,"",user_commented_revision:877dd37e0d11c11006ba333eea74972f8f3c0745,2012-08-30 00:00:06.214755
737 788,3,demo,86,qbtest,"",user_commented_revision:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-08-30 18:18:52.127137
737 788,3,demo,86,qbtest,"",user_commented_revision:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-08-30 18:18:52.127137
738 789,3,demo,86,qbtest,"",user_commented_revision:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-08-30 18:19:39.559827
738 789,3,demo,86,qbtest,"",user_commented_revision:04acb5b4d5e0baeedde09ab9f4921ebfd8a44fe3,2012-08-30 18:19:39.559827
739 790,3,demo,159,group/Test-for-code-review,"",started_following_repo,2012-08-30 18:21:15.38201
739 790,3,demo,159,group/Test-for-code-review,"",started_following_repo,2012-08-30 18:21:15.38201
740 791,3,demo,159,group/Test-for-code-review,"",user_created_repo,2012-08-30 18:21:15.396876
740 791,3,demo,159,group/Test-for-code-review,"",user_created_repo,2012-08-30 18:21:15.396876
741 792,3,demo,159,group/Test-for-code-review,"",push_local:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:22:30.576129
741 792,3,demo,159,group/Test-for-code-review,"",push_local:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:22:30.576129
742 793,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:25:35.145053
742 793,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:25:35.145053
743 794,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:25:55.638486
743 794,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:25:55.638486
744 795,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:26:45.22087
744 795,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 18:26:45.22087
745 796,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:28:52.430153
745 796,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:28:52.430153
746 797,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:28:59.540779
746 797,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:28:59.540779
747 798,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:46:21.757499
747 798,3,demo,159,group/Test-for-code-review,"",user_updated_repo,2012-08-30 18:46:21.757499
748 799,3,demo,159,group/Test-for-code-review,"",push_local:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:06:37.805225
748 799,3,demo,159,group/Test-for-code-review,"",push_local:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:06:37.805225
749 800,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:07:57.905038
749 800,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:07:57.905038
750 801,1,default,159,group/Test-for-code-review,176.9.28.203,pull,2012-08-30 19:12:18.946031
750 801,1,default,159,group/Test-for-code-review,176.9.28.203,pull,2012-08-30 19:12:18.946031
751 802,3,demo,160,group/test-der-zweite,"",started_following_repo,2012-08-30 19:12:19.100001
751 802,3,demo,160,group/test-der-zweite,"",started_following_repo,2012-08-30 19:12:19.100001
752 803,3,demo,160,group/test-der-zweite,"",user_created_repo,2012-08-30 19:12:19.109789
752 803,3,demo,160,group/test-der-zweite,"",user_created_repo,2012-08-30 19:12:19.109789
753 804,3,demo,160,group/test-der-zweite,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:12:33.306323
753 804,3,demo,160,group/test-der-zweite,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:12:33.306323
754 805,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:14:51.326684
754 805,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:14:51.326684
755 806,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:14:54.354662
755 806,3,demo,159,group/Test-for-code-review,"",user_commented_revision:1ea6c5155c207b823306f6d4135975cd62de5ea6,2012-08-30 19:14:54.354662
756 807,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 19:15:23.722829
756 807,3,demo,159,group/Test-for-code-review,"",user_commented_revision:2305443e5a06a9d80e328741d2da742145f80eee,2012-08-30 19:15:23.722829
757 808,150,dlamotte,1,test,"",user_commented_pull_request:31,2012-08-30 23:03:25.180892
757 808,150,dlamotte,1,test,"",user_commented_pull_request:31,2012-08-30 23:03:25.180892
758 809,150,dlamotte,1,test,"",user_closed_pull_request:31,2012-08-30 23:03:25.192118
758 809,150,dlamotte,1,test,"",user_closed_pull_request:31,2012-08-30 23:03:25.192118
759 810,150,dlamotte,161,test-rhodecode-pull-request,"",started_following_repo,2012-08-30 23:05:08.817245
759 810,150,dlamotte,161,test-xxx-pull-request,"",started_following_repo,2012-08-30 23:05:08.817245
760 811,150,dlamotte,161,test-rhodecode-pull-request,"",user_created_repo,2012-08-30 23:05:08.832769
760 811,150,dlamotte,161,test-xxx-pull-request,"",user_created_repo,2012-08-30 23:05:08.832769
761 812,150,dlamotte,161,test-rhodecode-pull-request,143.127.128.10,push:e839aac4f06bb1f0dde813d6b7e80cc345f8d70d,2012-08-30 23:06:12.300969
761 812,150,dlamotte,161,test-xxx-pull-request,143.127.128.10,push:e839aac4f06bb1f0dde813d6b7e80cc345f8d70d,2012-08-30 23:06:12.300969
762 813,150,dlamotte,161,test-rhodecode-pull-request,143.127.128.10,"push:1b01a9f3ba4951615f1c9cfbe19ea62f3abeed9f,062ab363eaef7fc73342a93f4624030103fc36f9",2012-08-30 23:08:29.621962
762 813,150,dlamotte,161,test-xxx-pull-request,143.127.128.10,"push:1b01a9f3ba4951615f1c9cfbe19ea62f3abeed9f,062ab363eaef7fc73342a93f4624030103fc36f9",2012-08-30 23:08:29.621962
763 814,1,default,1,test,176.9.28.203,pull,2012-08-30 23:14:51.336754
763 814,1,default,1,test,176.9.28.203,pull,2012-08-30 23:14:51.336754
764 815,151,mill1359,162,test-m,"",started_following_repo,2012-08-30 23:14:51.499881
764 815,151,mill1359,162,test-m,"",started_following_repo,2012-08-30 23:14:51.499881
765 816,151,mill1359,162,test-m,"",user_created_repo,2012-08-30 23:14:51.509169
765 816,151,mill1359,162,test-m,"",user_created_repo,2012-08-30 23:14:51.509169
766 817,1,default,162,test-m,143.127.128.10,pull,2012-08-30 23:16:00.219245
766 817,1,default,162,test-m,143.127.128.10,pull,2012-08-30 23:16:00.219245
767 818,151,mill1359,162,test-m,143.127.128.10,push:8a528cebe032d5502c73608281a954233347ce36,2012-08-30 23:19:20.205642
767 818,151,mill1359,162,test-m,143.127.128.10,push:8a528cebe032d5502c73608281a954233347ce36,2012-08-30 23:19:20.205642
768 819,151,mill1359,162,test-m,"",user_commented_pull_request:32,2012-08-30 23:21:27.6093
768 819,151,mill1359,162,test-m,"",user_commented_pull_request:32,2012-08-30 23:21:27.6093
769 820,151,mill1359,162,test-m,"",user_closed_pull_request:32,2012-08-30 23:21:27.617668
769 820,151,mill1359,162,test-m,"",user_closed_pull_request:32,2012-08-30 23:21:27.617668
770 821,155,cdugz,163,nagios,"",started_following_repo,2012-08-31 16:42:33.825148
770 821,155,cdugz,163,nagios,"",started_following_repo,2012-08-31 16:42:33.825148
771 822,155,cdugz,163,nagios,"",user_created_repo,2012-08-31 16:42:33.83886
771 822,155,cdugz,163,nagios,"",user_created_repo,2012-08-31 16:42:33.83886
772 895,3,demo,122,amab,"",push_local:f0509a4f718f5a31eafcb8fbe9caf21a642c5753,2012-09-05 01:30:02.737976
772 895,3,demo,122,amab,"",push_local:f0509a4f718f5a31eafcb8fbe9caf21a642c5753,2012-09-05 01:30:02.737976
773 896,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-09-05 11:05:19.904842
773 896,3,demo,32,big-project,"",user_commented_revision:06d5302c4830e5af52f06c462f11f75107b2a1ff,2012-09-05 11:05:19.904842
774 823,155,cdugz,163,nagios,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,a38d5508f516f360cd603a72cd4a4f16facf5825,cf7656e6c2cb29241db1f6ae0af2823684d7d0b4,0ebf06f94b584abe59853618ca68b9416f13fe20,413886edff138d8de1e3e23698fabba444de6167,335bb28b7c5428044f17ef9bc57a992b759b2d93,feba8837f9ac8af56b6588e8fcc7710eeeebd327,bf0781be32a59aef35f8bf95a2f614894e773926,fc3792349c770fe014d0774e980e3bba600bb5a6",2012-08-31 16:46:05.896127
774 823,155,cdugz,163,nagios,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,a38d5508f516f360cd603a72cd4a4f16facf5825,cf7656e6c2cb29241db1f6ae0af2823684d7d0b4,0ebf06f94b584abe59853618ca68b9416f13fe20,413886edff138d8de1e3e23698fabba444de6167,335bb28b7c5428044f17ef9bc57a992b759b2d93,feba8837f9ac8af56b6588e8fcc7710eeeebd327,bf0781be32a59aef35f8bf95a2f614894e773926,fc3792349c770fe014d0774e980e3bba600bb5a6",2012-08-31 16:46:05.896127
775 824,155,cdugz,164,rhodecode-ref,"",started_following_repo,2012-08-31 17:42:24.794235
775 824,155,cdugz,164,xxx-ref,"",started_following_repo,2012-08-31 17:42:24.794235
776 825,155,cdugz,164,rhodecode-ref,"",user_created_repo,2012-08-31 17:42:24.806839
776 825,155,cdugz,164,xxx-ref,"",user_created_repo,2012-08-31 17:42:24.806839
777 826,155,cdugz,164,rhodecode-ref,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,c91bea8206218cf051c6b0ab6a352c7371b5212d",2012-08-31 17:43:03.365708
777 826,155,cdugz,164,xxx-ref,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,c91bea8206218cf051c6b0ab6a352c7371b5212d",2012-08-31 17:43:03.365708
778 827,155,cdugz,164,rhodecode-ref,"",user_updated_repo,2012-08-31 17:44:01.673127
778 827,155,cdugz,164,xxx-ref,"",user_updated_repo,2012-08-31 17:44:01.673127
779 828,155,cdugz,165,rhodecode-dev,"",started_following_repo,2012-08-31 17:44:52.870468
779 828,155,cdugz,165,xxx-dev,"",started_following_repo,2012-08-31 17:44:52.870468
780 829,155,cdugz,165,rhodecode-dev,"",user_created_repo,2012-08-31 17:44:52.880649
780 829,155,cdugz,165,xxx-dev,"",user_created_repo,2012-08-31 17:44:52.880649
781 830,155,cdugz,165,rhodecode-dev,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,107236f51ef01fcb27d1c613c18a93a2135c336c,2ff774f5163960e356530826b4faad804bd79972,e4b37340f046c2910a43017d814841df1caec1cf,c91bea8206218cf051c6b0ab6a352c7371b5212d,3e5071670c8eec699744bd94f9ebacba8ef33b1f,06303e4e0da2b0e909d985844fc573e3a32547a2",2012-08-31 17:45:20.027085
781 830,155,cdugz,165,xxx-dev,82.150.248.28,"push:380d5c3fd6c3948d5da3f56859104f4adf629553,30b5773f0f9d57cfb721576169685b36878969d1,47deef50eface398daa8ba09a6d79a9db2585c4f,107236f51ef01fcb27d1c613c18a93a2135c336c,2ff774f5163960e356530826b4faad804bd79972,e4b37340f046c2910a43017d814841df1caec1cf,c91bea8206218cf051c6b0ab6a352c7371b5212d,3e5071670c8eec699744bd94f9ebacba8ef33b1f,06303e4e0da2b0e909d985844fc573e3a32547a2",2012-08-31 17:45:20.027085
782 831,3,demo,93,fork-a,"",push_local:416552904882d8b8f051cad2071f4aa271d4ea4e,2012-08-31 18:50:50.885869
782 831,3,demo,93,fork-a,"",push_local:416552904882d8b8f051cad2071f4aa271d4ea4e,2012-08-31 18:50:50.885869
783 832,3,demo,166,dfgdfg,"",started_following_repo,2012-08-31 18:56:16.94572
783 832,3,demo,166,dfgdfg,"",started_following_repo,2012-08-31 18:56:16.94572
784 833,3,demo,166,dfgdfg,"",user_created_repo,2012-08-31 18:56:16.959102
784 833,3,demo,166,dfgdfg,"",user_created_repo,2012-08-31 18:56:16.959102
785 834,3,demo,166,dfgdfg,"",user_updated_repo,2012-08-31 18:56:40.349443
785 834,3,demo,166,dfgdfg,"",user_updated_repo,2012-08-31 18:56:40.349443
786 835,3,demo,166,dfgdfg,"",user_updated_repo,2012-08-31 18:56:43.138614
786 835,3,demo,166,dfgdfg,"",user_updated_repo,2012-08-31 18:56:43.138614
787 836,3,demo,167,group/test1234,"",started_following_repo,2012-09-01 13:16:21.279844
787 836,3,demo,167,group/test1234,"",started_following_repo,2012-09-01 13:16:21.279844
788 837,3,demo,167,group/test1234,"",user_created_repo,2012-09-01 13:16:21.293767
788 837,3,demo,167,group/test1234,"",user_created_repo,2012-09-01 13:16:21.293767
789 838,3,demo,168,group/test_interface,"",started_following_repo,2012-09-01 16:31:43.486262
789 838,3,demo,168,group/test_interface,"",started_following_repo,2012-09-01 16:31:43.486262
790 839,3,demo,168,group/test_interface,"",user_created_repo,2012-09-01 16:31:43.500171
790 839,3,demo,168,group/test_interface,"",user_created_repo,2012-09-01 16:31:43.500171
791 840,3,demo,169,group/demo_interface,"",started_following_repo,2012-09-01 16:33:21.416702
791 840,3,demo,169,group/demo_interface,"",started_following_repo,2012-09-01 16:33:21.416702
792 841,3,demo,169,group/demo_interface,"",user_created_repo,2012-09-01 16:33:21.429822
792 841,3,demo,169,group/demo_interface,"",user_created_repo,2012-09-01 16:33:21.429822
793 842,3,demo,169,group/demo_interface,"",user_updated_repo,2012-09-01 16:34:48.888958
793 842,3,demo,169,group/demo_interface,"",user_updated_repo,2012-09-01 16:34:48.888958
794 843,2,admin,,"","",admin_updated_user:demo,2012-09-01 21:37:36.22824
794 843,2,admin,,"","",admin_updated_user:demo,2012-09-01 21:37:36.22824
795 844,2,admin,42,foo,"",admin_updated_repo,2012-09-01 21:38:55.72173
795 844,2,admin,42,foo,"",admin_updated_repo,2012-09-01 21:38:55.72173
796 845,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:19:55.864414
796 845,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:19:55.864414
797 846,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:22:04.179327
797 846,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:22:04.179327
798 847,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:22:20.301017
798 847,3,demo,68,aaa-project,"",user_commented_revision:2babd97db425482a53b679956df09f89c3154a2c,2012-09-02 02:22:20.301017
799 848,167,asegarra,124,fork-another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-03 00:00:02.708105
799 848,167,asegarra,124,fork-another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-03 00:00:02.708105
800 849,167,asegarra,124,fork-another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-03 00:00:15.395196
800 849,167,asegarra,124,fork-another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-03 00:00:15.395196
801 850,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 04:40:41.834982
801 850,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 04:40:41.834982
802 851,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:13:57.839857
802 851,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:13:57.839857
803 852,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:15:33.483452
803 852,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:15:33.483452
804 853,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:28:27.434639
804 853,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-03 07:28:27.434639
805 854,2,admin,,"","",admin_updated_users_group:group,2012-09-03 08:20:10.984426
805 854,2,admin,,"","",admin_updated_users_group:group,2012-09-03 08:20:10.984426
806 855,2,admin,,"","",admin_updated_users_group:group,2012-09-03 08:20:22.82228
806 855,2,admin,,"","",admin_updated_users_group:group,2012-09-03 08:20:22.82228
807 856,2,admin,68,aaa-project,"",admin_updated_repo,2012-09-03 08:28:23.441904
807 856,2,admin,68,aaa-project,"",admin_updated_repo,2012-09-03 08:28:23.441904
808 857,3,demo,170,_01_jdj,"",started_following_repo,2012-09-03 09:52:03.080751
808 857,3,demo,170,_01_jdj,"",started_following_repo,2012-09-03 09:52:03.080751
809 858,3,demo,170,_01_jdj,"",user_created_repo,2012-09-03 09:52:03.103369
809 858,3,demo,170,_01_jdj,"",user_created_repo,2012-09-03 09:52:03.103369
810 859,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:45:50.257273
810 859,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:45:50.257273
811 860,3,demo,171,releases/Blabla,"",user_created_repo,2012-09-03 13:45:50.271441
811 860,3,demo,171,releases/Blabla,"",user_created_repo,2012-09-03 13:45:50.271441
812 861,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:24.790546
812 861,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:24.790546
813 862,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:34.42949
813 862,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:34.42949
814 863,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:37.546423
814 863,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:37.546423
815 864,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:37.766286
815 864,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:37.766286
816 865,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:38.018055
816 865,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:38.018055
817 866,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:40.717862
817 866,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:40.717862
818 867,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:40.849278
818 867,3,demo,171,releases/Blabla,"",stopped_following_repo,2012-09-03 13:46:40.849278
819 868,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:41.061175
819 868,3,demo,171,releases/Blabla,"",started_following_repo,2012-09-03 13:46:41.061175
820 869,2,admin,172,go,"",started_following_repo,2012-09-03 14:30:41.496854
820 869,2,admin,172,go,"",started_following_repo,2012-09-03 14:30:41.496854
821 870,2,admin,172,go,"",admin_created_repo,2012-09-03 14:30:41.508885
821 870,2,admin,172,go,"",admin_created_repo,2012-09-03 14:30:41.508885
822 871,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 02:08:20.759339
822 871,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 02:08:20.759339
823 872,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-04 02:20:58.295369
823 872,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-04 02:20:58.295369
824 873,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-04 02:40:16.584952
824 873,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-04 02:40:16.584952
825 874,3,demo,173,code-review-dev,"",started_following_repo,2012-09-04 13:01:06.110732
825 874,3,demo,173,code-review-dev,"",started_following_repo,2012-09-04 13:01:06.110732
826 875,3,demo,173,code-review-dev,"",user_created_repo,2012-09-04 13:01:06.150884
826 875,3,demo,173,code-review-dev,"",user_created_repo,2012-09-04 13:01:06.150884
827 876,3,demo,173,code-review-dev,195.238.92.121,push:cb2ea0ebb59413e325470ee63aa83bb84d9d126c,2012-09-04 13:02:03.374983
827 876,3,demo,173,code-review-dev,195.238.92.121,push:cb2ea0ebb59413e325470ee63aa83bb84d9d126c,2012-09-04 13:02:03.374983
828 877,3,demo,173,code-review-dev,"",push_local:ae44a27e7e02d679b00bb94c04c2348d2ca88cd6,2012-09-04 13:03:50.249481
828 877,3,demo,173,code-review-dev,"",push_local:ae44a27e7e02d679b00bb94c04c2348d2ca88cd6,2012-09-04 13:03:50.249481
829 878,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:04:13.26806
829 878,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:04:13.26806
830 879,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:04:17.650534
830 879,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:04:17.650534
831 880,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:05:42.76781
831 880,3,demo,173,code-review-dev,"",user_updated_repo,2012-09-04 13:05:42.76781
832 881,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 15:59:58.584723
832 881,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 15:59:58.584723
833 882,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 16:00:08.318723
833 882,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-04 16:00:08.318723
834 883,3,demo,174,cruel-test-2,"",started_following_repo,2012-09-04 16:57:50.235592
834 883,3,demo,174,cruel-test-2,"",started_following_repo,2012-09-04 16:57:50.235592
835 884,3,demo,174,cruel-test-2,"",user_created_repo,2012-09-04 16:57:50.255676
835 884,3,demo,174,cruel-test-2,"",user_created_repo,2012-09-04 16:57:50.255676
836 885,3,demo,174,cruel-test-2,"",push_local:b396ac3c7f6c18caf55a87abd84847d345732805,2012-09-04 16:58:25.458669
836 885,3,demo,174,cruel-test-2,"",push_local:b396ac3c7f6c18caf55a87abd84847d345732805,2012-09-04 16:58:25.458669
837 886,3,demo,174,cruel-test-2,"",push_local:a5419e86108ea38b872c9cb0880c312d2595c2aa,2012-09-04 16:59:21.3612
837 886,3,demo,174,cruel-test-2,"",push_local:a5419e86108ea38b872c9cb0880c312d2595c2aa,2012-09-04 16:59:21.3612
838 887,3,demo,174,cruel-test-2,"",user_commented_revision:a5419e86108ea38b872c9cb0880c312d2595c2aa,2012-09-04 17:01:36.969813
838 887,3,demo,174,cruel-test-2,"",user_commented_revision:a5419e86108ea38b872c9cb0880c312d2595c2aa,2012-09-04 17:01:36.969813
839 888,3,demo,33,fork-big-project,"",push_local:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-04 17:07:03.988595
839 888,3,demo,33,fork-big-project,"",push_local:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-04 17:07:03.988595
840 889,3,demo,32,big-project,"",user_commented_pull_request:34,2012-09-04 17:09:12.417908
840 889,3,demo,32,big-project,"",user_commented_pull_request:34,2012-09-04 17:09:12.417908
841 890,3,demo,32,big-project,"",user_commented_pull_request:34,2012-09-04 17:10:04.92285
841 890,3,demo,32,big-project,"",user_commented_pull_request:34,2012-09-04 17:10:04.92285
842 891,3,demo,32,big-project,"",user_closed_pull_request:34,2012-09-04 17:10:04.927287
842 891,3,demo,32,big-project,"",user_closed_pull_request:34,2012-09-04 17:10:04.927287
843 892,3,demo,34,a,"",user_updated_repo,2012-09-05 00:47:01.089512
843 892,3,demo,34,a,"",user_updated_repo,2012-09-05 00:47:01.089512
844 893,3,demo,34,a,"",user_updated_repo,2012-09-05 00:47:11.588561
844 893,3,demo,34,a,"",user_updated_repo,2012-09-05 00:47:11.588561
845 894,3,demo,24,fork-Something,"",user_updated_repo,2012-09-05 01:03:09.893608
845 894,3,demo,24,fork-Something,"",user_updated_repo,2012-09-05 01:03:09.893608
846 897,1,default,66,pm-test,195.160.233.181,pull,2012-09-05 13:12:04.976374
846 897,1,default,66,pm-test,195.160.233.181,pull,2012-09-05 13:12:04.976374
847 898,3,demo,66,pm-test,195.160.233.181,push:d19c8fc1bfa2d661d4240e8f120f4ecf6267f9fa,2012-09-05 13:12:51.274952
847 898,3,demo,66,pm-test,195.160.233.181,push:d19c8fc1bfa2d661d4240e8f120f4ecf6267f9fa,2012-09-05 13:12:51.274952
848 899,3,demo,8,Test_Repo,"",user_commented_pull_request:35,2012-09-05 13:14:25.686481
848 899,3,demo,8,Test_Repo,"",user_commented_pull_request:35,2012-09-05 13:14:25.686481
849 900,3,demo,8,Test_Repo,"",user_commented_pull_request:35,2012-09-05 13:14:43.033131
849 900,3,demo,8,Test_Repo,"",user_commented_pull_request:35,2012-09-05 13:14:43.033131
850 901,3,demo,8,Test_Repo,"",user_closed_pull_request:35,2012-09-05 13:14:43.04395
850 901,3,demo,8,Test_Repo,"",user_closed_pull_request:35,2012-09-05 13:14:43.04395
851 902,1,default,8,Test_Repo,195.160.233.181,pull,2012-09-05 13:17:38.089185
851 902,1,default,8,Test_Repo,195.160.233.181,pull,2012-09-05 13:17:38.089185
852 903,3,demo,8,Test_Repo,195.160.233.181,push:e8ad7b21735b6590c2dd476e7628ba331a1df384,2012-09-05 13:18:07.5396
852 903,3,demo,8,Test_Repo,195.160.233.181,push:e8ad7b21735b6590c2dd476e7628ba331a1df384,2012-09-05 13:18:07.5396
853 904,3,demo,175,fork-a-one-more,"",started_following_repo,2012-09-05 13:20:22.809301
853 904,3,demo,175,fork-a-one-more,"",started_following_repo,2012-09-05 13:20:22.809301
854 905,3,demo,34,a,"",user_forked_repo:fork-a-one-more,2012-09-05 13:20:22.832688
854 905,3,demo,34,a,"",user_forked_repo:fork-a-one-more,2012-09-05 13:20:22.832688
855 906,3,demo,175,fork-a-one-more,"",user_created_fork:fork-a-one-more,2012-09-05 13:20:22.841274
855 906,3,demo,175,fork-a-one-more,"",user_created_fork:fork-a-one-more,2012-09-05 13:20:22.841274
856 907,3,demo,175,fork-a-one-more,195.160.233.181,pull,2012-09-05 13:20:54.391748
856 907,3,demo,175,fork-a-one-more,195.160.233.181,pull,2012-09-05 13:20:54.391748
857 908,3,demo,175,fork-a-one-more,195.160.233.181,push:c6fb8c3fe1a8393f8861c39bf590d3865c503ca5,2012-09-05 13:22:36.203898
857 908,3,demo,175,fork-a-one-more,195.160.233.181,push:c6fb8c3fe1a8393f8861c39bf590d3865c503ca5,2012-09-05 13:22:36.203898
858 909,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:23:55.420971
858 909,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:23:55.420971
859 910,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:24:17.361904
859 910,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:24:17.361904
860 911,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:24:35.76659
860 911,3,demo,34,a,"",user_commented_pull_request:36,2012-09-05 13:24:35.76659
861 912,3,demo,34,a,"",user_closed_pull_request:36,2012-09-05 13:24:35.7744
861 912,3,demo,34,a,"",user_closed_pull_request:36,2012-09-05 13:24:35.7744
862 913,3,demo,34,a,"",user_commented_pull_request:37,2012-09-05 13:30:57.812004
862 913,3,demo,34,a,"",user_commented_pull_request:37,2012-09-05 13:30:57.812004
863 914,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:38:45.300458
863 914,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:38:45.300458
864 915,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:01.382629
864 915,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:01.382629
865 916,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:18.062238
865 916,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:18.062238
866 917,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:27.350966
866 917,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:27.350966
867 918,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:37.275952
867 918,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:39:37.275952
868 919,3,demo,34,a,"",user_updated_repo,2012-09-05 13:40:21.966185
868 919,3,demo,34,a,"",user_updated_repo,2012-09-05 13:40:21.966185
869 920,3,demo,34,a,"",user_commented_pull_request:37,2012-09-05 13:40:53.832787
869 920,3,demo,34,a,"",user_commented_pull_request:37,2012-09-05 13:40:53.832787
870 921,3,demo,34,a,"",user_closed_pull_request:37,2012-09-05 13:40:53.837264
870 921,3,demo,34,a,"",user_closed_pull_request:37,2012-09-05 13:40:53.837264
871 922,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:41:51.071776
871 922,3,demo,34,a,"",user_commented_pull_request:38,2012-09-05 13:41:51.071776
872 923,3,demo,34,a,"",user_closed_pull_request:38,2012-09-05 13:41:51.082763
872 923,3,demo,34,a,"",user_closed_pull_request:38,2012-09-05 13:41:51.082763
873 924,3,demo,34,a,"",user_updated_repo,2012-09-05 13:42:28.045216
873 924,3,demo,34,a,"",user_updated_repo,2012-09-05 13:42:28.045216
874 925,3,demo,176,hopsa,"",started_following_repo,2012-09-05 14:12:14.479866
874 925,3,demo,176,hopsa,"",started_following_repo,2012-09-05 14:12:14.479866
875 926,3,demo,165,rhodecode-dev,"",user_forked_repo:hopsa,2012-09-05 14:12:14.495649
875 926,3,demo,165,xxx-dev,"",user_forked_repo:hopsa,2012-09-05 14:12:14.495649
876 927,3,demo,176,hopsa,"",user_created_fork:hopsa,2012-09-05 14:12:14.507312
876 927,3,demo,176,hopsa,"",user_created_fork:hopsa,2012-09-05 14:12:14.507312
877 928,3,demo,177,blah,"",started_following_repo,2012-09-05 16:42:29.860682
877 928,3,demo,177,blah,"",started_following_repo,2012-09-05 16:42:29.860682
878 929,3,demo,177,blah,"",user_created_repo,2012-09-05 16:42:29.876509
878 929,3,demo,177,blah,"",user_created_repo,2012-09-05 16:42:29.876509
879 930,3,demo,178,myfolder-myrepo,"",started_following_repo,2012-09-05 17:33:08.753339
879 930,3,demo,178,myfolder-myrepo,"",started_following_repo,2012-09-05 17:33:08.753339
880 931,3,demo,178,myfolder-myrepo,"",user_created_repo,2012-09-05 17:33:08.765789
880 931,3,demo,178,myfolder-myrepo,"",user_created_repo,2012-09-05 17:33:08.765789
881 932,3,demo,180,MineReps,"",started_following_repo,2012-09-05 23:11:25.562383
881 932,3,demo,180,MineReps,"",started_following_repo,2012-09-05 23:11:25.562383
882 933,3,demo,180,MineReps,"",user_created_repo,2012-09-05 23:11:25.577972
882 933,3,demo,180,MineReps,"",user_created_repo,2012-09-05 23:11:25.577972
883 934,3,demo,33,fork-big-project,"",user_commented_revision:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-06 01:29:52.749682
883 934,3,demo,33,fork-big-project,"",user_commented_revision:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-06 01:29:52.749682
884 935,3,demo,33,fork-big-project,"",user_commented_revision:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-06 01:30:05.246986
884 935,3,demo,33,fork-big-project,"",user_commented_revision:51cec0b8c8a0e47d8edc81d5ffb5f77723c5cbf9,2012-09-06 01:30:05.246986
885 936,1,default,68,aaa-project,94.194.60.137,pull,2012-09-06 02:51:08.186518
885 936,1,default,68,aaa-project,94.194.60.137,pull,2012-09-06 02:51:08.186518
886 937,1,default,68,aaa-project,94.194.60.137,pull,2012-09-06 02:54:47.80033
886 937,1,default,68,aaa-project,94.194.60.137,pull,2012-09-06 02:54:47.80033
887 938,1,default,159,group/Test-for-code-review,"",push_local:e25e53f9a9cd4a39bb085830a67983bc6dd46e76,2012-09-06 03:08:45.578824
887 938,1,default,159,group/Test-for-code-review,"",push_local:e25e53f9a9cd4a39bb085830a67983bc6dd46e76,2012-09-06 03:08:45.578824
888 939,3,demo,159,group/Test-for-code-review,"",user_commented_revision:e25e53f9a9cd4a39bb085830a67983bc6dd46e76,2012-09-06 03:30:51.35489
888 939,3,demo,159,group/Test-for-code-review,"",user_commented_revision:e25e53f9a9cd4a39bb085830a67983bc6dd46e76,2012-09-06 03:30:51.35489
889 940,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 04:44:10.863264
889 940,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 04:44:10.863264
890 941,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 04:44:41.091954
890 941,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 04:44:41.091954
891 942,3,demo,68,aaa-project,"",push_local:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 04:45:38.572986
891 942,3,demo,68,aaa-project,"",push_local:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 04:45:38.572986
892 943,3,demo,68,aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 04:57:07.744368
892 943,3,demo,68,aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 04:57:07.744368
893 944,3,demo,68,aaa-project,"",push_local:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-06 04:57:36.830617
893 944,3,demo,68,aaa-project,"",push_local:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-06 04:57:36.830617
894 945,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-06 04:58:00.171714
894 945,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-06 04:58:00.171714
895 946,3,demo,68,aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 05:01:46.10616
895 946,3,demo,68,aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-09-06 05:01:46.10616
896 947,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 05:03:07.692388
896 947,3,demo,68,aaa-project,"",user_updated_repo,2012-09-06 05:03:07.692388
897 948,2,admin,,"","",admin_updated_user:ThunderEagle,2012-09-06 09:36:46.171404
897 948,2,admin,,"","",admin_updated_user:ThunderEagle,2012-09-06 09:36:46.171404
898 949,2,admin,,"","",admin_updated_user:nipocetyueai,2012-09-06 09:36:50.92007
898 949,2,admin,,"","",admin_updated_user:nipocetyueai,2012-09-06 09:36:50.92007
899 950,2,admin,,"","",admin_updated_user:mnemonikk,2012-09-06 09:36:56.872411
899 950,2,admin,,"","",admin_updated_user:mnemonikk,2012-09-06 09:36:56.872411
900 951,2,admin,,"","",admin_updated_user:kasai,2012-09-06 09:37:01.993148
900 951,2,admin,,"","",admin_updated_user:kasai,2012-09-06 09:37:01.993148
901 952,2,admin,,"","",admin_updated_user:Gerhard,2012-09-06 09:37:06.197752
901 952,2,admin,,"","",admin_updated_user:Gerhard,2012-09-06 09:37:06.197752
902 953,2,admin,,"","",admin_updated_user:dtucker,2012-09-06 09:37:10.301831
902 953,2,admin,,"","",admin_updated_user:dtucker,2012-09-06 09:37:10.301831
903 954,3,demo,181,group/MyTestRepo,"",started_following_repo,2012-09-06 15:19:51.89625
903 954,3,demo,181,group/MyTestRepo,"",started_following_repo,2012-09-06 15:19:51.89625
904 955,3,demo,181,group/MyTestRepo,"",user_created_repo,2012-09-06 15:19:51.912381
904 955,3,demo,181,group/MyTestRepo,"",user_created_repo,2012-09-06 15:19:51.912381
905 956,182,nohj,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-09-07 09:42:56.913732
905 956,182,nohj,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-09-07 09:42:56.913732
906 957,182,nohj,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-09-07 09:43:06.314091
906 957,182,nohj,93,fork-a,"",user_commented_revision:7f8b4f94e2a83394aa687e0bb110870769e9ca0a,2012-09-07 09:43:06.314091
907 958,3,demo,182,releases/test,"",started_following_repo,2012-09-07 11:22:43.780986
907 958,3,demo,182,releases/test,"",started_following_repo,2012-09-07 11:22:43.780986
908 959,3,demo,182,releases/test,"",user_created_repo,2012-09-07 11:22:43.795541
908 959,3,demo,182,releases/test,"",user_created_repo,2012-09-07 11:22:43.795541
909 960,3,demo,183,releases/fork-test,"",started_following_repo,2012-09-07 11:23:52.711668
909 960,3,demo,183,releases/fork-test,"",started_following_repo,2012-09-07 11:23:52.711668
910 961,3,demo,182,releases/test,"",user_forked_repo:releases/fork-test,2012-09-07 11:23:52.72963
910 961,3,demo,182,releases/test,"",user_forked_repo:releases/fork-test,2012-09-07 11:23:52.72963
911 962,3,demo,183,releases/fork-test,"",user_created_fork:releases/fork-test,2012-09-07 11:23:52.742467
911 962,3,demo,183,releases/fork-test,"",user_created_fork:releases/fork-test,2012-09-07 11:23:52.742467
912 963,3,demo,184,fork-aaa-project,"",started_following_repo,2012-09-07 11:28:35.495082
912 963,3,demo,184,fork-aaa-project,"",started_following_repo,2012-09-07 11:28:35.495082
913 964,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project,2012-09-07 11:28:35.510311
913 964,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project,2012-09-07 11:28:35.510311
914 965,3,demo,184,fork-aaa-project,"",user_created_fork:fork-aaa-project,2012-09-07 11:28:35.523318
914 965,3,demo,184,fork-aaa-project,"",user_created_fork:fork-aaa-project,2012-09-07 11:28:35.523318
915 966,3,demo,184,fork-aaa-project,"",push_local:b25fcd2b8f033115be20d9146c99c1aa6854dff0,2012-09-07 11:29:20.828412
915 966,3,demo,184,fork-aaa-project,"",push_local:b25fcd2b8f033115be20d9146c99c1aa6854dff0,2012-09-07 11:29:20.828412
916 967,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-07 11:32:38.639523
916 967,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-07 11:32:38.639523
917 968,3,demo,185,TestRepositoryCS,"",started_following_repo,2012-09-07 13:53:39.687423
917 968,3,demo,185,TestRepositoryCS,"",started_following_repo,2012-09-07 13:53:39.687423
918 969,3,demo,185,TestRepositoryCS,"",user_created_repo,2012-09-07 13:53:39.702762
918 969,3,demo,185,TestRepositoryCS,"",user_created_repo,2012-09-07 13:53:39.702762
919 970,3,demo,186,releases/softpedia,"",started_following_repo,2012-09-07 14:23:28.805185
919 970,3,demo,186,releases/softpedia,"",started_following_repo,2012-09-07 14:23:28.805185
920 971,3,demo,186,releases/softpedia,"",user_created_repo,2012-09-07 14:23:28.815298
920 971,3,demo,186,releases/softpedia,"",user_created_repo,2012-09-07 14:23:28.815298
921 972,3,demo,187,ptest,"",started_following_repo,2012-09-07 20:29:00.365852
921 972,3,demo,187,ptest,"",started_following_repo,2012-09-07 20:29:00.365852
922 973,3,demo,187,ptest,"",user_created_repo,2012-09-07 20:29:00.379277
922 973,3,demo,187,ptest,"",user_created_repo,2012-09-07 20:29:00.379277
923 974,3,demo,187,ptest,89.72.81.164,push:527819ac5de5c1ef222e10faa94d00031ff92276,2012-09-07 20:35:02.456136
923 974,3,demo,187,ptest,89.72.81.164,push:527819ac5de5c1ef222e10faa94d00031ff92276,2012-09-07 20:35:02.456136
924 975,3,demo,187,ptest,89.72.81.164,push:20312aeb821607689952b2e56de6167927c2790b,2012-09-07 20:40:50.055559
924 975,3,demo,187,ptest,89.72.81.164,push:20312aeb821607689952b2e56de6167927c2790b,2012-09-07 20:40:50.055559
925 976,3,demo,187,ptest,"",user_commented_revision:20312aeb821607689952b2e56de6167927c2790b,2012-09-07 20:43:26.445007
925 976,3,demo,187,ptest,"",user_commented_revision:20312aeb821607689952b2e56de6167927c2790b,2012-09-07 20:43:26.445007
926 977,141,asdf1234asdf,188,fork-Asdf,"",started_following_repo,2012-09-07 21:22:53.452145
926 977,141,asdf1234asdf,188,fork-Asdf,"",started_following_repo,2012-09-07 21:22:53.452145
927 978,141,asdf1234asdf,135,Asdf,"",user_forked_repo:fork-Asdf,2012-09-07 21:22:53.472411
927 978,141,asdf1234asdf,135,Asdf,"",user_forked_repo:fork-Asdf,2012-09-07 21:22:53.472411
928 979,141,asdf1234asdf,188,fork-Asdf,"",user_created_fork:fork-Asdf,2012-09-07 21:22:53.485295
928 979,141,asdf1234asdf,188,fork-Asdf,"",user_created_fork:fork-Asdf,2012-09-07 21:22:53.485295
929 980,141,asdf1234asdf,188,fork-Asdf,"",push_local:cf7c116b1345f1aa0b1df0d1c36abce396082561,2012-09-07 21:23:31.404039
929 980,141,asdf1234asdf,188,fork-Asdf,"",push_local:cf7c116b1345f1aa0b1df0d1c36abce396082561,2012-09-07 21:23:31.404039
930 981,141,asdf1234asdf,135,Asdf,"",user_commented_pull_request:40,2012-09-07 21:24:53.455489
930 981,141,asdf1234asdf,135,Asdf,"",user_commented_pull_request:40,2012-09-07 21:24:53.455489
931 982,141,asdf1234asdf,135,Asdf,"",user_closed_pull_request:40,2012-09-07 21:24:53.467808
931 982,141,asdf1234asdf,135,Asdf,"",user_closed_pull_request:40,2012-09-07 21:24:53.467808
932 983,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-07 22:54:29.053992
932 983,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-07 22:54:29.053992
933 984,3,demo,189,fork-_01_jdj,"",started_following_repo,2012-09-07 22:55:46.169783
933 984,3,demo,189,fork-_01_jdj,"",started_following_repo,2012-09-07 22:55:46.169783
934 985,3,demo,170,_01_jdj,"",user_forked_repo:fork-_01_jdj,2012-09-07 22:55:46.191342
934 985,3,demo,170,_01_jdj,"",user_forked_repo:fork-_01_jdj,2012-09-07 22:55:46.191342
935 986,3,demo,189,fork-_01_jdj,"",user_created_fork:fork-_01_jdj,2012-09-07 22:55:46.209143
935 986,3,demo,189,fork-_01_jdj,"",user_created_fork:fork-_01_jdj,2012-09-07 22:55:46.209143
936 987,2,admin,190,rhodecode,"",started_following_repo,2012-09-08 01:07:09.881091
936 987,2,admin,190,xxx,"",started_following_repo,2012-09-08 01:07:09.881091
937 988,2,admin,190,rhodecode,"",admin_created_repo,2012-09-08 01:07:09.895097
937 988,2,admin,190,xxx,"",admin_created_repo,2012-09-08 01:07:09.895097
938 989,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-08 08:57:27.586796
938 989,3,demo,34,a,"",user_commented_revision:332932afc11a2c6308d44e75f8b4ac7643093fa7,2012-09-08 08:57:27.586796
939 990,3,demo,191,kekeke,"",started_following_repo,2012-09-08 11:22:58.159504
939 990,3,demo,191,kekeke,"",started_following_repo,2012-09-08 11:22:58.159504
940 991,3,demo,191,kekeke,"",user_created_repo,2012-09-08 11:22:58.175212
940 991,3,demo,191,kekeke,"",user_created_repo,2012-09-08 11:22:58.175212
941 992,3,demo,191,kekeke,"",push_local:40926265e8964e7b71381c9c9e1d3c4dbdd158cc,2012-09-08 11:23:11.019021
941 992,3,demo,191,kekeke,"",push_local:40926265e8964e7b71381c9c9e1d3c4dbdd158cc,2012-09-08 11:23:11.019021
942 993,3,demo,191,kekeke,"",user_commented_revision:40926265e8964e7b71381c9c9e1d3c4dbdd158cc,2012-09-08 11:23:26.28488
942 993,3,demo,191,kekeke,"",user_commented_revision:40926265e8964e7b71381c9c9e1d3c4dbdd158cc,2012-09-08 11:23:26.28488
943 994,3,demo,192,fork-kekeke,"",started_following_repo,2012-09-08 11:23:53.101414
943 994,3,demo,192,fork-kekeke,"",started_following_repo,2012-09-08 11:23:53.101414
944 995,3,demo,191,kekeke,"",user_forked_repo:fork-kekeke,2012-09-08 11:23:53.115395
944 995,3,demo,191,kekeke,"",user_forked_repo:fork-kekeke,2012-09-08 11:23:53.115395
945 996,3,demo,192,fork-kekeke,"",user_created_fork:fork-kekeke,2012-09-08 11:23:53.129381
945 996,3,demo,192,fork-kekeke,"",user_created_fork:fork-kekeke,2012-09-08 11:23:53.129381
946 997,3,demo,192,fork-kekeke,"",push_local:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:24:25.629176
946 997,3,demo,192,fork-kekeke,"",push_local:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:24:25.629176
947 998,3,demo,192,fork-kekeke,"",user_commented_revision:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:24:36.698761
947 998,3,demo,192,fork-kekeke,"",user_commented_revision:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:24:36.698761
948 999,3,demo,192,fork-kekeke,"",user_commented_revision:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:26:01.605011
948 999,3,demo,192,fork-kekeke,"",user_commented_revision:f6c6170cb0cd27fd21d4a8f4ae477bb86ee67e6e,2012-09-08 11:26:01.605011
949 1000,3,demo,193,swamp,"",started_following_repo,2012-09-08 11:27:28.069118
949 1000,3,demo,193,swamp,"",started_following_repo,2012-09-08 11:27:28.069118
950 1001,3,demo,193,swamp,"",user_created_repo,2012-09-08 11:27:28.079797
950 1001,3,demo,193,swamp,"",user_created_repo,2012-09-08 11:27:28.079797
951 1002,3,demo,193,swamp,"",push_local:c4cd716a477bd604e57f8a07c28462f2e55b1282,2012-09-08 11:27:40.680692
951 1002,3,demo,193,swamp,"",push_local:c4cd716a477bd604e57f8a07c28462f2e55b1282,2012-09-08 11:27:40.680692
952 1003,3,demo,194,fork-swamp,"",started_following_repo,2012-09-08 11:28:05.141092
952 1003,3,demo,194,fork-swamp,"",started_following_repo,2012-09-08 11:28:05.141092
953 1004,3,demo,193,swamp,"",user_forked_repo:fork-swamp,2012-09-08 11:28:05.223876
953 1004,3,demo,193,swamp,"",user_forked_repo:fork-swamp,2012-09-08 11:28:05.223876
954 1005,3,demo,194,fork-swamp,"",user_created_fork:fork-swamp,2012-09-08 11:28:05.233149
954 1005,3,demo,194,fork-swamp,"",user_created_fork:fork-swamp,2012-09-08 11:28:05.233149
955 1006,3,demo,194,fork-swamp,"",push_local:cdf8380186a792bffb9be284df1bd95c631143ca,2012-09-08 11:28:33.802256
955 1006,3,demo,194,fork-swamp,"",push_local:cdf8380186a792bffb9be284df1bd95c631143ca,2012-09-08 11:28:33.802256
956 1007,3,demo,193,swamp,"",user_commented_pull_request:41,2012-09-08 11:29:22.818392
956 1007,3,demo,193,swamp,"",user_commented_pull_request:41,2012-09-08 11:29:22.818392
957 1008,3,demo,193,swamp,"",user_closed_pull_request:41,2012-09-08 11:29:22.824771
957 1008,3,demo,193,swamp,"",user_closed_pull_request:41,2012-09-08 11:29:22.824771
958 1009,3,demo,193,swamp,"",user_updated_repo,2012-09-08 11:32:58.174439
958 1009,3,demo,193,swamp,"",user_updated_repo,2012-09-08 11:32:58.174439
959 1010,3,demo,,group/book,"",started_following_repo,2012-09-08 18:59:38.392464
959 1010,3,demo,,group/book,"",started_following_repo,2012-09-08 18:59:38.392464
960 1011,3,demo,,group/book,"",user_created_repo,2012-09-08 18:59:38.412482
960 1011,3,demo,,group/book,"",user_created_repo,2012-09-08 18:59:38.412482
961 1012,3,demo,,group/book,"",push_local:da7ffa14ae51096c974b2297cfd8a10009b44266,2012-09-08 19:01:38.20195
961 1012,3,demo,,group/book,"",push_local:da7ffa14ae51096c974b2297cfd8a10009b44266,2012-09-08 19:01:38.20195
962 1013,3,demo,,group/book,"",stopped_following_repo,2012-09-08 19:04:50.017367
962 1013,3,demo,,group/book,"",stopped_following_repo,2012-09-08 19:04:50.017367
963 1014,3,demo,,group/book,"",user_deleted_repo,2012-09-08 19:09:36.059085
963 1014,3,demo,,group/book,"",user_deleted_repo,2012-09-08 19:09:36.059085
964 1015,183,dotnet,196,PD,"",started_following_repo,2012-09-08 22:57:37.558354
964 1015,183,dotnet,196,PD,"",started_following_repo,2012-09-08 22:57:37.558354
965 1016,183,dotnet,196,PD,"",user_created_repo,2012-09-08 22:57:37.570947
965 1016,183,dotnet,196,PD,"",user_created_repo,2012-09-08 22:57:37.570947
966 1017,183,dotnet,196,group/PD,"",user_updated_repo,2012-09-08 22:58:13.674462
966 1017,183,dotnet,196,group/PD,"",user_updated_repo,2012-09-08 22:58:13.674462
967 1018,3,demo,197,CollectionQuery,"",started_following_repo,2012-09-09 00:58:29.372736
967 1018,3,demo,197,CollectionQuery,"",started_following_repo,2012-09-09 00:58:29.372736
968 1019,3,demo,197,CollectionQuery,"",user_created_repo,2012-09-09 00:58:29.391956
968 1019,3,demo,197,CollectionQuery,"",user_created_repo,2012-09-09 00:58:29.391956
969 1020,3,demo,197,CollectionQuery,"",user_commented_revision:34f0cefd8f7fbddf412daddc8676483f71456e8d,2012-09-09 00:58:51.17291
969 1020,3,demo,197,CollectionQuery,"",user_commented_revision:34f0cefd8f7fbddf412daddc8676483f71456e8d,2012-09-09 00:58:51.17291
970 1021,3,demo,197,CollectionQuery,"",user_commented_revision:34f0cefd8f7fbddf412daddc8676483f71456e8d,2012-09-09 00:58:56.364677
970 1021,3,demo,197,CollectionQuery,"",user_commented_revision:34f0cefd8f7fbddf412daddc8676483f71456e8d,2012-09-09 00:58:56.364677
971 1022,3,demo,198,fork-CollectionQuery,"",started_following_repo,2012-09-09 00:59:36.116229
971 1022,3,demo,198,fork-CollectionQuery,"",started_following_repo,2012-09-09 00:59:36.116229
972 1023,3,demo,197,CollectionQuery,"",user_forked_repo:fork-CollectionQuery,2012-09-09 00:59:36.133811
972 1023,3,demo,197,CollectionQuery,"",user_forked_repo:fork-CollectionQuery,2012-09-09 00:59:36.133811
973 1024,3,demo,198,fork-CollectionQuery,"",user_created_fork:fork-CollectionQuery,2012-09-09 00:59:36.214126
973 1024,3,demo,198,fork-CollectionQuery,"",user_created_fork:fork-CollectionQuery,2012-09-09 00:59:36.214126
974 1025,3,demo,199,fork-fork-CollectionQuery,"",started_following_repo,2012-09-09 00:59:57.408192
974 1025,3,demo,199,fork-fork-CollectionQuery,"",started_following_repo,2012-09-09 00:59:57.408192
975 1026,3,demo,198,fork-CollectionQuery,"",user_forked_repo:fork-fork-CollectionQuery,2012-09-09 00:59:57.423968
975 1026,3,demo,198,fork-CollectionQuery,"",user_forked_repo:fork-fork-CollectionQuery,2012-09-09 00:59:57.423968
976 1027,3,demo,199,fork-fork-CollectionQuery,"",user_created_fork:fork-fork-CollectionQuery,2012-09-09 00:59:57.433065
976 1027,3,demo,199,fork-fork-CollectionQuery,"",user_created_fork:fork-fork-CollectionQuery,2012-09-09 00:59:57.433065
977 1028,3,demo,199,fork-fork-CollectionQuery,195.43.146.59,push:69ce02e460b36f4c28a468ac1356b579b9a954ff,2012-09-09 01:01:22.306272
977 1028,3,demo,199,fork-fork-CollectionQuery,195.43.146.59,push:69ce02e460b36f4c28a468ac1356b579b9a954ff,2012-09-09 01:01:22.306272
978 1029,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:19.007376
978 1029,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:19.007376
979 1030,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:27.274382
979 1030,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:27.274382
980 1031,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:58.084638
980 1031,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:02:58.084638
981 1032,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:03:24.236666
981 1032,3,demo,198,fork-CollectionQuery,"",user_commented_pull_request:42,2012-09-09 01:03:24.236666
982 1033,3,demo,198,fork-CollectionQuery,"",user_closed_pull_request:42,2012-09-09 01:03:24.242005
982 1033,3,demo,198,fork-CollectionQuery,"",user_closed_pull_request:42,2012-09-09 01:03:24.242005
983 1034,3,demo,199,fork-fork-CollectionQuery,"",user_updated_repo,2012-09-09 01:07:10.157164
983 1034,3,demo,199,fork-fork-CollectionQuery,"",user_updated_repo,2012-09-09 01:07:10.157164
984 1035,3,demo,200,group/MostafaTest,"",started_following_repo,2012-09-09 05:40:58.979338
984 1035,3,demo,200,group/MostafaTest,"",started_following_repo,2012-09-09 05:40:58.979338
985 1036,3,demo,200,group/MostafaTest,"",user_created_repo,2012-09-09 05:40:58.990523
985 1036,3,demo,200,group/MostafaTest,"",user_created_repo,2012-09-09 05:40:58.990523
986 1037,3,demo,200,group/MostafaTest,"",user_updated_repo,2012-09-09 05:41:48.334746
986 1037,3,demo,200,group/MostafaTest,"",user_updated_repo,2012-09-09 05:41:48.334746
987 1055,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 19:54:21.605064
987 1055,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 19:54:21.605064
988 1056,184,testar,201,tord,"",user_closed_pull_request:44,2012-09-09 19:54:21.613226
988 1056,184,testar,201,tord,"",user_closed_pull_request:44,2012-09-09 19:54:21.613226
989 1039,3,demo,170,_01_jdj,"",user_updated_repo,2012-09-09 07:53:52.339713
989 1039,3,demo,170,_01_jdj,"",user_updated_repo,2012-09-09 07:53:52.339713
990 1040,3,demo,170,_01_jdj,"",user_updated_repo,2012-09-09 07:54:26.72259
990 1040,3,demo,170,_01_jdj,"",user_updated_repo,2012-09-09 07:54:26.72259
991 1041,3,demo,170,group/_01_jdj,"",user_updated_repo,2012-09-09 07:55:38.58919
991 1041,3,demo,170,group/_01_jdj,"",user_updated_repo,2012-09-09 07:55:38.58919
992 1042,184,testar,201,tord,"",started_following_repo,2012-09-09 18:14:16.86889
992 1042,184,testar,201,tord,"",started_following_repo,2012-09-09 18:14:16.86889
993 1043,184,testar,201,tord,"",user_created_repo,2012-09-09 18:14:16.882512
993 1043,184,testar,201,tord,"",user_created_repo,2012-09-09 18:14:16.882512
994 1044,184,testar,163,nagios,"",started_following_repo,2012-09-09 18:15:38.62944
994 1044,184,testar,163,nagios,"",started_following_repo,2012-09-09 18:15:38.62944
995 1045,184,testar,201,tord,"",push_local:35b3ebc8e1c23902eb97031f42f666df0835c5be,2012-09-09 18:19:47.818844
995 1045,184,testar,201,tord,"",push_local:35b3ebc8e1c23902eb97031f42f666df0835c5be,2012-09-09 18:19:47.818844
996 1046,184,testar,202,fork-tord,"",started_following_repo,2012-09-09 18:20:57.856478
996 1046,184,testar,202,fork-tord,"",started_following_repo,2012-09-09 18:20:57.856478
997 1047,184,testar,201,tord,"",user_forked_repo:fork-tord,2012-09-09 18:20:57.874063
997 1047,184,testar,201,tord,"",user_forked_repo:fork-tord,2012-09-09 18:20:57.874063
998 1048,184,testar,202,fork-tord,"",user_created_fork:fork-tord,2012-09-09 18:20:57.882599
998 1048,184,testar,202,fork-tord,"",user_created_fork:fork-tord,2012-09-09 18:20:57.882599
999 1049,184,testar,202,fork-tord,"",push_local:9a2c544511d0a4acd495e8ea5731a8991a74282e,2012-09-09 18:21:38.707225
999 1049,184,testar,202,fork-tord,"",push_local:9a2c544511d0a4acd495e8ea5731a8991a74282e,2012-09-09 18:21:38.707225
1000 1050,184,testar,201,tord,"",user_commented_pull_request:43,2012-09-09 18:25:50.104238
1000 1050,184,testar,201,tord,"",user_commented_pull_request:43,2012-09-09 18:25:50.104238
1001 1051,184,testar,201,tord,"",user_closed_pull_request:43,2012-09-09 18:25:50.113446
1001 1051,184,testar,201,tord,"",user_closed_pull_request:43,2012-09-09 18:25:50.113446
1002 1052,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 18:27:24.712191
1002 1052,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 18:27:24.712191
1003 1053,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 18:28:22.083687
1003 1053,184,testar,201,tord,"",user_commented_pull_request:44,2012-09-09 18:28:22.083687
1004 1054,184,testar,201,tord,"",user_updated_repo,2012-09-09 18:29:15.858734
1004 1054,184,testar,201,tord,"",user_updated_repo,2012-09-09 18:29:15.858734
1005 1057,185,robert.zaremba,90,a-fork1,"",user_commented_revision:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-09-09 22:27:16.614006
1005 1057,185,robert.zaremba,90,a-fork1,"",user_commented_revision:b09d43f798414bcbdf4dc1fc5dafe6ce4aa5afc3,2012-09-09 22:27:16.614006
1006 1058,185,robert.zaremba,90,a-fork1,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-09 22:32:41.43306
1006 1058,185,robert.zaremba,90,a-fork1,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-09 22:32:41.43306
1007 1059,185,robert.zaremba,90,a-fork1,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-09 22:33:13.181212
1007 1059,185,robert.zaremba,90,a-fork1,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-09 22:33:13.181212
1008 1060,3,demo,203,testtt,"",started_following_repo,2012-09-10 09:06:26.895244
1008 1060,3,demo,203,testtt,"",started_following_repo,2012-09-10 09:06:26.895244
1009 1061,3,demo,203,testtt,"",user_created_repo,2012-09-10 09:06:26.906878
1009 1061,3,demo,203,testtt,"",user_created_repo,2012-09-10 09:06:26.906878
1010 1062,3,demo,34,a,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-10 10:05:40.492293
1010 1062,3,demo,34,a,"",user_commented_revision:7672806f881f67eb1441d00b16e983e761127cb6,2012-09-10 10:05:40.492293
1011 1063,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-10 18:01:16.277098
1011 1063,3,demo,68,aaa-project,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-09-10 18:01:16.277098
1012 1064,3,demo,81,FS_dummy,"",user_updated_repo,2012-09-10 18:06:21.324052
1012 1064,3,demo,81,FS_dummy,"",user_updated_repo,2012-09-10 18:06:21.324052
1013 1065,3,demo,204,releases/Sopra_testgd,"",started_following_repo,2012-09-10 18:11:02.020678
1013 1065,3,demo,204,releases/Sopra_testgd,"",started_following_repo,2012-09-10 18:11:02.020678
1014 1066,3,demo,204,releases/Sopra_testgd,"",user_created_repo,2012-09-10 18:11:02.030205
1014 1066,3,demo,204,releases/Sopra_testgd,"",user_created_repo,2012-09-10 18:11:02.030205
1015 1067,3,demo,204,releases/Sopra_testgd,"",push_local:284745170ffd9e889c2edfb0233b6d654e787fa9,2012-09-10 18:12:24.966918
1015 1067,3,demo,204,releases/Sopra_testgd,"",push_local:284745170ffd9e889c2edfb0233b6d654e787fa9,2012-09-10 18:12:24.966918
1016 1068,3,demo,204,releases/Sopra_testgd,"",user_commented_revision:284745170ffd9e889c2edfb0233b6d654e787fa9,2012-09-10 18:14:01.969763
1016 1068,3,demo,204,releases/Sopra_testgd,"",user_commented_revision:284745170ffd9e889c2edfb0233b6d654e787fa9,2012-09-10 18:14:01.969763
1017 1069,3,demo,205,releases/fork-Sopra_testgd,"",started_following_repo,2012-09-10 18:16:19.48076
1017 1069,3,demo,205,releases/fork-Sopra_testgd,"",started_following_repo,2012-09-10 18:16:19.48076
1018 1070,3,demo,204,releases/Sopra_testgd,"",user_forked_repo:releases/fork-Sopra_testgd,2012-09-10 18:16:19.499335
1018 1070,3,demo,204,releases/Sopra_testgd,"",user_forked_repo:releases/fork-Sopra_testgd,2012-09-10 18:16:19.499335
1019 1071,3,demo,205,releases/fork-Sopra_testgd,"",user_created_fork:releases/fork-Sopra_testgd,2012-09-10 18:16:19.511534
1019 1071,3,demo,205,releases/fork-Sopra_testgd,"",user_created_fork:releases/fork-Sopra_testgd,2012-09-10 18:16:19.511534
1020 1072,3,demo,205,releases/fork-Sopra_testgd,"",push_local:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-10 18:21:23.60213
1020 1072,3,demo,205,releases/fork-Sopra_testgd,"",push_local:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-10 18:21:23.60213
1021 1073,189,bondsbw,57,SuperProject,"",user_commented_revision:a3188ce9ed64822ceae497665910c2e18cddf021,2012-09-10 22:54:09.907623
1021 1073,189,bondsbw,57,SuperProject,"",user_commented_revision:a3188ce9ed64822ceae497665910c2e18cddf021,2012-09-10 22:54:09.907623
1022 1074,189,bondsbw,122,amab,"",user_commented_revision:f0509a4f718f5a31eafcb8fbe9caf21a642c5753,2012-09-10 22:55:47.862221
1022 1074,189,bondsbw,122,amab,"",user_commented_revision:f0509a4f718f5a31eafcb8fbe9caf21a642c5753,2012-09-10 22:55:47.862221
1023 1075,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",push_local:a48ce47517381c8ca647c5f5ed459cfd16c2d929,2012-09-11 19:49:34.961449
1023 1075,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",push_local:a48ce47517381c8ca647c5f5ed459cfd16c2d929,2012-09-11 19:49:34.961449
1024 1076,3,demo,206,test-sls,"",started_following_repo,2012-09-11 22:38:29.066354
1024 1076,3,demo,206,test-sls,"",started_following_repo,2012-09-11 22:38:29.066354
1025 1077,3,demo,206,test-sls,"",user_created_repo,2012-09-11 22:38:29.079212
1025 1077,3,demo,206,test-sls,"",user_created_repo,2012-09-11 22:38:29.079212
1026 1078,3,demo,206,test-sls,"",push_local:dd00a017d1957479cfcde1e452b625de41dde9d2,2012-09-11 22:38:53.239821
1026 1078,3,demo,206,test-sls,"",push_local:dd00a017d1957479cfcde1e452b625de41dde9d2,2012-09-11 22:38:53.239821
1027 1079,3,demo,207,fork-test-sls,"",started_following_repo,2012-09-11 22:39:50.010568
1027 1079,3,demo,207,fork-test-sls,"",started_following_repo,2012-09-11 22:39:50.010568
1028 1080,3,demo,206,test-sls,"",user_forked_repo:fork-test-sls,2012-09-11 22:39:50.029999
1028 1080,3,demo,206,test-sls,"",user_forked_repo:fork-test-sls,2012-09-11 22:39:50.029999
1029 1081,3,demo,207,fork-test-sls,"",user_created_fork:fork-test-sls,2012-09-11 22:39:50.043157
1029 1081,3,demo,207,fork-test-sls,"",user_created_fork:fork-test-sls,2012-09-11 22:39:50.043157
1030 1082,3,demo,206,test-sls,"",push_local:c6b89acf0f7cd0b524001d0aa6f5ab3b83c30610,2012-09-11 22:40:31.203174
1030 1082,3,demo,206,test-sls,"",push_local:c6b89acf0f7cd0b524001d0aa6f5ab3b83c30610,2012-09-11 22:40:31.203174
1031 1083,3,demo,54,glib,"",user_commented_revision:538b2f106de78b7dfeac2a98f3d5594ed0ed2ade,2012-09-12 00:11:20.855342
1031 1083,3,demo,54,glib,"",user_commented_revision:538b2f106de78b7dfeac2a98f3d5594ed0ed2ade,2012-09-12 00:11:20.855342
1032 1084,3,demo,54,glib,"",user_commented_revision:82d914d808c616d14d489c0272c6d5afc4bfbd5a,2012-09-12 00:12:22.85722
1032 1084,3,demo,54,glib,"",user_commented_revision:82d914d808c616d14d489c0272c6d5afc4bfbd5a,2012-09-12 00:12:22.85722
1033 1085,3,demo,208,fork-foo-test-pull-request,"",started_following_repo,2012-09-12 05:01:27.90602
1033 1085,3,demo,208,fork-foo-test-pull-request,"",started_following_repo,2012-09-12 05:01:27.90602
1034 1086,3,demo,42,foo,"",user_forked_repo:fork-foo-test-pull-request,2012-09-12 05:01:30.440339
1034 1086,3,demo,42,foo,"",user_forked_repo:fork-foo-test-pull-request,2012-09-12 05:01:30.440339
1035 1087,3,demo,208,fork-foo-test-pull-request,"",user_created_fork:fork-foo-test-pull-request,2012-09-12 05:01:30.452552
1035 1087,3,demo,208,fork-foo-test-pull-request,"",user_created_fork:fork-foo-test-pull-request,2012-09-12 05:01:30.452552
1036 1088,3,demo,208,fork-foo-test-pull-request,"",push_local:466e27f74322722e315290532fbcb304f6d58c89,2012-09-12 05:03:04.911355
1036 1088,3,demo,208,fork-foo-test-pull-request,"",push_local:466e27f74322722e315290532fbcb304f6d58c89,2012-09-12 05:03:04.911355
1037 1089,3,demo,209,simple,"",started_following_repo,2012-09-12 05:06:08.645688
1037 1089,3,demo,209,simple,"",started_following_repo,2012-09-12 05:06:08.645688
1038 1090,3,demo,209,simple,"",user_created_repo,2012-09-12 05:06:08.657642
1038 1090,3,demo,209,simple,"",user_created_repo,2012-09-12 05:06:08.657642
1039 1091,3,demo,209,simple,"",push_local:f486184ddd95d91608069a8551febd72e268f4df,2012-09-12 05:07:25.821515
1039 1091,3,demo,209,simple,"",push_local:f486184ddd95d91608069a8551febd72e268f4df,2012-09-12 05:07:25.821515
1040 1092,3,demo,210,simple-dev,"",started_following_repo,2012-09-12 05:08:21.036466
1040 1092,3,demo,210,simple-dev,"",started_following_repo,2012-09-12 05:08:21.036466
1041 1093,3,demo,209,simple,"",user_forked_repo:simple-dev,2012-09-12 05:08:21.055166
1041 1093,3,demo,209,simple,"",user_forked_repo:simple-dev,2012-09-12 05:08:21.055166
1042 1094,3,demo,210,simple-dev,"",user_created_fork:simple-dev,2012-09-12 05:08:21.069551
1042 1094,3,demo,210,simple-dev,"",user_created_fork:simple-dev,2012-09-12 05:08:21.069551
1043 1095,3,demo,210,simple-dev,"",push_local:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 05:09:16.139893
1043 1095,3,demo,210,simple-dev,"",push_local:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 05:09:16.139893
1044 1096,3,demo,209,simple,"",user_commented_pull_request:47,2012-09-12 05:11:57.925581
1044 1096,3,demo,209,simple,"",user_commented_pull_request:47,2012-09-12 05:11:57.925581
1045 1097,3,demo,209,simple,"",user_commented_pull_request:47,2012-09-12 05:12:24.949869
1045 1097,3,demo,209,simple,"",user_commented_pull_request:47,2012-09-12 05:12:24.949869
1046 1098,3,demo,209,simple,"",user_closed_pull_request:47,2012-09-12 05:12:24.958144
1046 1098,3,demo,209,simple,"",user_closed_pull_request:47,2012-09-12 05:12:24.958144
1047 1099,1,default,209,simple,221.237.152.62,pull,2012-09-12 05:40:02.318983
1047 1099,1,default,209,simple,221.237.152.62,pull,2012-09-12 05:40:02.318983
1048 1100,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:40:17.924834
1048 1100,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:40:17.924834
1049 1101,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:40:49.20005
1049 1101,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:40:49.20005
1050 1102,3,demo,209,simple,221.237.152.62,push:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 05:41:15.014744
1050 1102,3,demo,209,simple,221.237.152.62,push:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 05:41:15.014744
1051 1103,3,demo,210,simple-dev,"",push_local:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 05:47:24.31048
1051 1103,3,demo,210,simple-dev,"",push_local:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 05:47:24.31048
1052 1104,3,demo,210,simple-dev,"",user_updated_repo,2012-09-12 05:48:00.607586
1052 1104,3,demo,210,simple-dev,"",user_updated_repo,2012-09-12 05:48:00.607586
1053 1105,3,demo,209,simple,"",user_commented_pull_request:48,2012-09-12 05:49:58.582042
1053 1105,3,demo,209,simple,"",user_commented_pull_request:48,2012-09-12 05:49:58.582042
1054 1106,3,demo,209,simple,"",user_closed_pull_request:48,2012-09-12 05:49:58.589388
1054 1106,3,demo,209,simple,"",user_closed_pull_request:48,2012-09-12 05:49:58.589388
1055 1107,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:50:50.549103
1055 1107,1,default,210,simple-dev,221.237.152.62,pull,2012-09-12 05:50:50.549103
1056 1108,3,demo,209,simple,221.237.152.62,push:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 05:51:17.124232
1056 1108,3,demo,209,simple,221.237.152.62,push:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 05:51:17.124232
1057 1109,3,demo,34,a,"",push_local:48e1ba33b7951b8e8023e3e3cc54ef2540f4e8f1,2012-09-12 08:36:56.839135
1057 1109,3,demo,34,a,"",push_local:48e1ba33b7951b8e8023e3e3cc54ef2540f4e8f1,2012-09-12 08:36:56.839135
1058 1110,3,demo,120,group/clojure.git,"",user_updated_repo,2012-09-12 10:03:47.644822
1058 1110,3,demo,120,group/clojure.git,"",user_updated_repo,2012-09-12 10:03:47.644822
1059 1111,3,demo,174,cruel-test-2,"",push_local:a0971ac6b506a17718c1544689f3f6cfc261576d,2012-09-12 10:54:25.099359
1059 1111,3,demo,174,cruel-test-2,"",push_local:a0971ac6b506a17718c1544689f3f6cfc261576d,2012-09-12 10:54:25.099359
1060 1112,3,demo,174,releases/cruel-test-2,"",user_updated_repo,2012-09-12 10:55:26.86657
1060 1112,3,demo,174,releases/cruel-test-2,"",user_updated_repo,2012-09-12 10:55:26.86657
1061 1113,3,demo,174,releases/cruel-test-2,"",user_updated_repo,2012-09-12 10:55:30.573836
1061 1113,3,demo,174,releases/cruel-test-2,"",user_updated_repo,2012-09-12 10:55:30.573836
1062 1114,2,admin,211,testé1,"",started_following_repo,2012-09-12 11:57:41.047778
1062 1114,2,admin,211,testé1,"",started_following_repo,2012-09-12 11:57:41.047778
1063 1115,2,admin,211,testé1,"",admin_created_repo,2012-09-12 11:57:41.083287
1063 1115,2,admin,211,testé1,"",admin_created_repo,2012-09-12 11:57:41.083287
1064 1116,3,demo,169,group/demo_interface,"",user_updated_repo,2012-09-12 12:07:54.077355
1064 1116,3,demo,169,group/demo_interface,"",user_updated_repo,2012-09-12 12:07:54.077355
1065 1117,3,demo,174,releases/cruel-test-2,"",stopped_following_repo,2012-09-12 12:08:52.082216
1065 1117,3,demo,174,releases/cruel-test-2,"",stopped_following_repo,2012-09-12 12:08:52.082216
1066 1118,3,demo,174,releases/cruel-test-2,"",started_following_repo,2012-09-12 12:08:53.730447
1066 1118,3,demo,174,releases/cruel-test-2,"",started_following_repo,2012-09-12 12:08:53.730447
1067 1119,3,demo,174,releases/cruel-test-2,"",stopped_following_repo,2012-09-12 12:08:55.148237
1067 1119,3,demo,174,releases/cruel-test-2,"",stopped_following_repo,2012-09-12 12:08:55.148237
1068 1120,3,demo,209,simple,"",user_commented_revision:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 12:12:45.729356
1068 1120,3,demo,209,simple,"",user_commented_revision:bbcf483fdda92478ca6a00a0f14cc77815d5414f,2012-09-12 12:12:45.729356
1069 1121,3,demo,209,simple,"",user_commented_revision:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 12:14:55.164695
1069 1121,3,demo,209,simple,"",user_commented_revision:5041fad58a9214bf203d139c171a277c51bac1a3,2012-09-12 12:14:55.164695
1070 1122,193,test1234124890814,212,group/fork-aaa-project,"",started_following_repo,2012-09-12 21:55:02.137169
1070 1122,193,test1234124890814,212,group/fork-aaa-project,"",started_following_repo,2012-09-12 21:55:02.137169
1071 1123,193,test1234124890814,68,aaa-project,"",user_forked_repo:group/fork-aaa-project,2012-09-12 21:55:02.184564
1071 1123,193,test1234124890814,68,aaa-project,"",user_forked_repo:group/fork-aaa-project,2012-09-12 21:55:02.184564
1072 1124,193,test1234124890814,212,group/fork-aaa-project,"",user_created_fork:group/fork-aaa-project,2012-09-12 21:55:02.198242
1072 1124,193,test1234124890814,212,group/fork-aaa-project,"",user_created_fork:group/fork-aaa-project,2012-09-12 21:55:02.198242
1073 1125,3,demo,36,bootstrap,"",user_updated_repo,2012-09-13 11:40:44.539269
1073 1125,3,demo,36,bootstrap,"",user_updated_repo,2012-09-13 11:40:44.539269
1074 1126,3,demo,36,bootstrap,"",user_updated_repo,2012-09-13 11:40:50.053297
1074 1126,3,demo,36,bootstrap,"",user_updated_repo,2012-09-13 11:40:50.053297
1075 1127,3,demo,34,a,"",user_commented_revision:48e1ba33b7951b8e8023e3e3cc54ef2540f4e8f1,2012-09-13 11:45:58.772773
1075 1127,3,demo,34,a,"",user_commented_revision:48e1ba33b7951b8e8023e3e3cc54ef2540f4e8f1,2012-09-13 11:45:58.772773
1076 1128,3,demo,213,fork-aii,"",started_following_repo,2012-09-13 11:47:05.531304
1076 1128,3,demo,213,fork-aii,"",started_following_repo,2012-09-13 11:47:05.531304
1077 1129,3,demo,34,a,"",user_forked_repo:fork-aii,2012-09-13 11:47:05.549251
1077 1129,3,demo,34,a,"",user_forked_repo:fork-aii,2012-09-13 11:47:05.549251
1078 1130,3,demo,213,fork-aii,"",user_created_fork:fork-aii,2012-09-13 11:47:05.56141
1078 1130,3,demo,213,fork-aii,"",user_created_fork:fork-aii,2012-09-13 11:47:05.56141
1079 1131,3,demo,214,group/fork-clojure.git2,"",started_following_repo,2012-09-13 11:49:07.655132
1079 1131,3,demo,214,group/fork-clojure.git2,"",started_following_repo,2012-09-13 11:49:07.655132
1080 1132,3,demo,120,group/clojure.git,"",user_forked_repo:group/fork-clojure.git2,2012-09-13 11:49:09.06382
1080 1132,3,demo,120,group/clojure.git,"",user_forked_repo:group/fork-clojure.git2,2012-09-13 11:49:09.06382
1081 1133,3,demo,214,group/fork-clojure.git2,"",user_created_fork:group/fork-clojure.git2,2012-09-13 11:49:09.078581
1081 1133,3,demo,214,group/fork-clojure.git2,"",user_created_fork:group/fork-clojure.git2,2012-09-13 11:49:09.078581
1082 1134,3,demo,34,a,"",push_local:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-13 11:54:41.606977
1082 1134,3,demo,34,a,"",push_local:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-13 11:54:41.606977
1083 1135,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-13 11:54:58.759518
1083 1135,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-13 11:54:58.759518
1084 1136,3,demo,215,fork-aaa-project-fork,"",started_following_repo,2012-09-13 13:38:46.509316
1084 1136,3,demo,215,fork-aaa-project-fork,"",started_following_repo,2012-09-13 13:38:46.509316
1085 1137,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project-fork,2012-09-13 13:38:46.527575
1085 1137,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project-fork,2012-09-13 13:38:46.527575
1086 1138,3,demo,215,fork-aaa-project-fork,"",user_created_fork:fork-aaa-project-fork,2012-09-13 13:38:46.539228
1086 1138,3,demo,215,fork-aaa-project-fork,"",user_created_fork:fork-aaa-project-fork,2012-09-13 13:38:46.539228
1087 1139,3,demo,215,fork-aaa-project-fork,"",push_local:7a8d3ab1f8ae1f1ab29a8b91b1946d92e30d46b3,2012-09-13 13:39:43.069005
1087 1139,3,demo,215,fork-aaa-project-fork,"",push_local:7a8d3ab1f8ae1f1ab29a8b91b1946d92e30d46b3,2012-09-13 13:39:43.069005
1088 1140,3,demo,68,aaa-project,"",stopped_following_repo,2012-09-13 15:29:12.016889
1088 1140,3,demo,68,aaa-project,"",stopped_following_repo,2012-09-13 15:29:12.016889
1089 1141,3,demo,68,aaa-project,"",started_following_repo,2012-09-13 15:29:12.692509
1089 1141,3,demo,68,aaa-project,"",started_following_repo,2012-09-13 15:29:12.692509
1090 1142,195,emcconne,216,TestingRhino,"",started_following_repo,2012-09-13 17:30:27.876656
1090 1142,195,emcconne,216,TestingRhino,"",started_following_repo,2012-09-13 17:30:27.876656
1091 1143,195,emcconne,216,TestingRhino,"",user_created_repo,2012-09-13 17:30:27.892609
1091 1143,195,emcconne,216,TestingRhino,"",user_created_repo,2012-09-13 17:30:27.892609
1092 1144,198,sdfsdf,217,sdfsdf,"",started_following_repo,2012-09-14 08:58:28.936153
1092 1144,198,sdfsdf,217,sdfsdf,"",started_following_repo,2012-09-14 08:58:28.936153
1093 1145,198,sdfsdf,217,sdfsdf,"",user_created_repo,2012-09-14 08:58:28.945587
1093 1145,198,sdfsdf,217,sdfsdf,"",user_created_repo,2012-09-14 08:58:28.945587
1094 1146,198,sdfsdf,217,sdfsdf,"",push_local:13d78aa20a388de51a7717800e6d3ce5d186bb19,2012-09-14 08:58:39.080817
1094 1146,198,sdfsdf,217,sdfsdf,"",push_local:13d78aa20a388de51a7717800e6d3ce5d186bb19,2012-09-14 08:58:39.080817
1095 1147,3,demo,218,TestRepo,"",started_following_repo,2012-09-14 11:07:12.582488
1095 1147,3,demo,218,TestRepo,"",started_following_repo,2012-09-14 11:07:12.582488
1096 1148,3,demo,218,TestRepo,"",user_created_repo,2012-09-14 11:07:12.591173
1096 1148,3,demo,218,TestRepo,"",user_created_repo,2012-09-14 11:07:12.591173
1097 1149,3,demo,68,aaa-project,"",user_commented_pull_request:50,2012-09-14 13:24:16.044125
1097 1149,3,demo,68,aaa-project,"",user_commented_pull_request:50,2012-09-14 13:24:16.044125
1098 1150,3,demo,68,aaa-project,"",user_commented_pull_request:50,2012-09-14 13:24:51.197813
1098 1150,3,demo,68,aaa-project,"",user_commented_pull_request:50,2012-09-14 13:24:51.197813
1099 1151,3,demo,68,aaa-project,"",user_closed_pull_request:50,2012-09-14 13:24:51.217266
1099 1151,3,demo,68,aaa-project,"",user_closed_pull_request:50,2012-09-14 13:24:51.217266
1100 1152,3,demo,68,aaa-project,"",user_updated_repo,2012-09-14 13:27:23.206802
1100 1152,3,demo,68,aaa-project,"",user_updated_repo,2012-09-14 13:27:23.206802
1101 1153,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-14 16:02:30.704441
1101 1153,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-14 16:02:30.704441
1102 1154,200,animusoft,219,Animusoft.Respository,"",started_following_repo,2012-09-14 18:02:30.536279
1102 1154,200,animusoft,219,Animusoft.Respository,"",started_following_repo,2012-09-14 18:02:30.536279
1103 1155,200,animusoft,219,Animusoft.Respository,"",user_created_repo,2012-09-14 18:02:30.545377
1103 1155,200,animusoft,219,Animusoft.Respository,"",user_created_repo,2012-09-14 18:02:30.545377
1104 1156,200,animusoft,219,Animusoft.Respository,"",push_local:73da86adad8bdb1ce83aa6a5d0c603a9b28b4a37,2012-09-14 18:04:26.459249
1104 1156,200,animusoft,219,Animusoft.Respository,"",push_local:73da86adad8bdb1ce83aa6a5d0c603a9b28b4a37,2012-09-14 18:04:26.459249
1105 1157,200,animusoft,219,Animusoft.Respository,"",push_local:6b8fe7f9d13089ca20dddca163b35f7d8651f60f,2012-09-14 18:05:16.811723
1105 1157,200,animusoft,219,Animusoft.Respository,"",push_local:6b8fe7f9d13089ca20dddca163b35f7d8651f60f,2012-09-14 18:05:16.811723
1106 1158,201,AsyA,220,TestTestTestTestTestTest,"",started_following_repo,2012-09-14 19:16:17.886851
1106 1158,201,AsyA,220,TestTestTestTestTestTest,"",started_following_repo,2012-09-14 19:16:17.886851
1107 1159,201,AsyA,220,TestTestTestTestTestTest,"",user_created_repo,2012-09-14 19:16:17.895972
1107 1159,201,AsyA,220,TestTestTestTestTestTest,"",user_created_repo,2012-09-14 19:16:17.895972
1108 1160,201,AsyA,220,TestTestTestTestTestTest,"",push_local:25acf78d91b645e98173440645ccfe14688b1f20,2012-09-14 19:17:19.578893
1108 1160,201,AsyA,220,TestTestTestTestTestTest,"",push_local:25acf78d91b645e98173440645ccfe14688b1f20,2012-09-14 19:17:19.578893
1109 1161,201,AsyA,220,TestTestTestTestTestTest,"",push_local:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:09.018005
1109 1161,201,AsyA,220,TestTestTestTestTestTest,"",push_local:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:09.018005
1110 1162,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:26.225849
1110 1162,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:26.225849
1111 1163,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:31.314463
1111 1163,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:31.314463
1112 1164,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:36.071029
1112 1164,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:36.071029
1113 1165,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:42.675126
1113 1165,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:42.675126
1114 1166,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:45.57336
1114 1166,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:45.57336
1115 1167,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:48.976628
1115 1167,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_revision:f067475760e5739e2c9ada32160ff4d14193071b,2012-09-14 19:20:48.976628
1116 1168,201,AsyA,221,fork-TestTestTestTestTestTest,"",started_following_repo,2012-09-14 19:26:54.224113
1116 1168,201,AsyA,221,fork-TestTestTestTestTestTest,"",started_following_repo,2012-09-14 19:26:54.224113
1117 1169,201,AsyA,220,TestTestTestTestTestTest,"",user_forked_repo:fork-TestTestTestTestTestTest,2012-09-14 19:26:54.236074
1117 1169,201,AsyA,220,TestTestTestTestTestTest,"",user_forked_repo:fork-TestTestTestTestTestTest,2012-09-14 19:26:54.236074
1118 1170,201,AsyA,221,fork-TestTestTestTestTestTest,"",user_created_fork:fork-TestTestTestTestTestTest,2012-09-14 19:26:54.243559
1118 1170,201,AsyA,221,fork-TestTestTestTestTestTest,"",user_created_fork:fork-TestTestTestTestTestTest,2012-09-14 19:26:54.243559
1119 1171,201,AsyA,221,fork-TestTestTestTestTestTest,"",push_local:05e54fdd720c30f564ed12bdbff6dbbeb55f3816,2012-09-14 19:29:39.084466
1119 1171,201,AsyA,221,fork-TestTestTestTestTestTest,"",push_local:05e54fdd720c30f564ed12bdbff6dbbeb55f3816,2012-09-14 19:29:39.084466
1120 1172,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_pull_request:51,2012-09-14 19:36:31.399955
1120 1172,201,AsyA,220,TestTestTestTestTestTest,"",user_commented_pull_request:51,2012-09-14 19:36:31.399955
1121 1173,201,AsyA,220,TestTestTestTestTestTest,"",user_closed_pull_request:51,2012-09-14 19:36:31.404011
1121 1173,201,AsyA,220,TestTestTestTestTestTest,"",user_closed_pull_request:51,2012-09-14 19:36:31.404011
1122 1174,201,AsyA,220,TestTestTestTestTestTest,"",push_local:79f5d792cff0085cf103a76c7a19934de3828f43,2012-09-14 19:44:41.485916
1122 1174,201,AsyA,220,TestTestTestTestTestTest,"",push_local:79f5d792cff0085cf103a76c7a19934de3828f43,2012-09-14 19:44:41.485916
1123 1175,203,f.ludwig,222,florian-test,"",started_following_repo,2012-09-15 14:46:45.248996
1123 1175,203,f.ludwig,222,florian-test,"",started_following_repo,2012-09-15 14:46:45.248996
1124 1176,203,f.ludwig,222,florian-test,"",user_created_repo,2012-09-15 14:46:45.258481
1124 1176,203,f.ludwig,222,florian-test,"",user_created_repo,2012-09-15 14:46:45.258481
1125 1177,203,f.ludwig,223,florian-test-fork,"",started_following_repo,2012-09-15 14:47:01.375283
1125 1177,203,f.ludwig,223,florian-test-fork,"",started_following_repo,2012-09-15 14:47:01.375283
1126 1178,203,f.ludwig,222,florian-test,"",user_forked_repo:florian-test-fork,2012-09-15 14:47:01.40721
1126 1178,203,f.ludwig,222,florian-test,"",user_forked_repo:florian-test-fork,2012-09-15 14:47:01.40721
1127 1179,203,f.ludwig,223,florian-test-fork,"",user_created_fork:florian-test-fork,2012-09-15 14:47:01.415249
1127 1179,203,f.ludwig,223,florian-test-fork,"",user_created_fork:florian-test-fork,2012-09-15 14:47:01.415249
1128 1180,203,f.ludwig,223,florian-test-fork,"",push_local:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-15 15:20:01.863826
1128 1180,203,f.ludwig,223,florian-test-fork,"",push_local:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-15 15:20:01.863826
1129 1181,203,f.ludwig,223,florian-test-fork,"",push_local:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:28.233187
1129 1181,203,f.ludwig,223,florian-test-fork,"",push_local:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:28.233187
1130 1182,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:38.339449
1130 1182,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:38.339449
1131 1183,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:43.785366
1131 1183,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:20:43.785366
1132 1184,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:21:21.2331
1132 1184,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:4225a7038b6d6bb193056967830ba56a2f38b005,2012-09-15 15:21:21.2331
1133 1185,193,test1234124890814,224,gnomon,"",started_following_repo,2012-09-15 22:29:06.869927
1133 1185,193,test1234124890814,224,gnomon,"",started_following_repo,2012-09-15 22:29:06.869927
1134 1186,193,test1234124890814,224,gnomon,"",user_created_repo,2012-09-15 22:29:06.906648
1134 1186,193,test1234124890814,224,gnomon,"",user_created_repo,2012-09-15 22:29:06.906648
1135 1187,207,D21,225,Some-fork,"",started_following_repo,2012-09-16 07:54:31.811337
1135 1187,207,D21,225,Some-fork,"",started_following_repo,2012-09-16 07:54:31.811337
1136 1188,207,D21,99,another-fork-to-check-code-review,"",user_forked_repo:Some-fork,2012-09-16 07:54:31.928503
1136 1188,207,D21,99,another-fork-to-check-code-review,"",user_forked_repo:Some-fork,2012-09-16 07:54:31.928503
1137 1189,207,D21,225,Some-fork,"",user_created_fork:Some-fork,2012-09-16 07:54:31.937372
1137 1189,207,D21,225,Some-fork,"",user_created_fork:Some-fork,2012-09-16 07:54:31.937372
1138 1190,3,demo,68,aaa-project,"",stopped_following_repo,2012-09-17 02:37:55.405711
1138 1190,3,demo,68,aaa-project,"",stopped_following_repo,2012-09-17 02:37:55.405711
1139 1191,3,demo,68,aaa-project,"",started_following_repo,2012-09-17 02:37:56.743644
1139 1191,3,demo,68,aaa-project,"",started_following_repo,2012-09-17 02:37:56.743644
1140 1192,3,demo,32,big-project,"",push_local:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:40:47.259763
1140 1192,3,demo,32,big-project,"",push_local:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:40:47.259763
1141 1193,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:42:22.067682
1141 1193,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:42:22.067682
1142 1194,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:43:53.288729
1142 1194,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:43:53.288729
1143 1195,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:44:53.446591
1143 1195,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:44:53.446591
1144 1196,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:45:25.720276
1144 1196,3,demo,32,big-project,"",user_commented_revision:90f0247f654982a4dbc9e4861418c595a683e955,2012-09-17 02:45:25.720276
1145 1197,210,NewJoker,226,Game-Pomba,"",started_following_repo,2012-09-17 19:42:40.085447
1145 1197,210,NewJoker,226,Game-Pomba,"",started_following_repo,2012-09-17 19:42:40.085447
1146 1198,210,NewJoker,226,Game-Pomba,"",user_created_repo,2012-09-17 19:42:40.098774
1146 1198,210,NewJoker,226,Game-Pomba,"",user_created_repo,2012-09-17 19:42:40.098774
1147 1199,210,NewJoker,226,Game-Pomba,200.145.158.30,"push:82cbee64e8bf751654f39b6cef522575394d2b39,428505e2393b901562daac11bc050f449cb4418c,79c5e73e770d002472ee117b099b998b1897f140,67c5815cf9810a07a4edcfb63a6801a230149225",2012-09-17 19:43:52.544873
1147 1199,210,NewJoker,226,Game-Pomba,200.145.158.30,"push:82cbee64e8bf751654f39b6cef522575394d2b39,428505e2393b901562daac11bc050f449cb4418c,79c5e73e770d002472ee117b099b998b1897f140,67c5815cf9810a07a4edcfb63a6801a230149225",2012-09-17 19:43:52.544873
1148 1200,210,NewJoker,226,Game-Pomba,"",user_updated_repo,2012-09-17 19:51:20.717504
1148 1200,210,NewJoker,226,Game-Pomba,"",user_updated_repo,2012-09-17 19:51:20.717504
1149 1201,210,NewJoker,226,Game-Pomba,"",user_updated_repo,2012-09-17 19:54:17.369104
1149 1201,210,NewJoker,226,Game-Pomba,"",user_updated_repo,2012-09-17 19:54:17.369104
1150 1202,211,hmcaio,226,Game-Pomba,200.145.158.30,pull,2012-09-17 20:06:05.58778
1150 1202,211,hmcaio,226,Game-Pomba,200.145.158.30,pull,2012-09-17 20:06:05.58778
1151 1203,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",user_updated_repo,2012-09-18 22:11:32.262653
1151 1203,108,dukeofgaming,124,fork-another-fork-to-check-code-review,"",user_updated_repo,2012-09-18 22:11:32.262653
1152 1204,3,demo,227,fork-aaa-project-2,"",started_following_repo,2012-09-19 05:04:47.237996
1152 1204,3,demo,227,fork-aaa-project-2,"",started_following_repo,2012-09-19 05:04:47.237996
1153 1205,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project-2,2012-09-19 05:04:47.261047
1153 1205,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project-2,2012-09-19 05:04:47.261047
1154 1206,3,demo,227,fork-aaa-project-2,"",user_created_fork:fork-aaa-project-2,2012-09-19 05:04:47.275211
1154 1206,3,demo,227,fork-aaa-project-2,"",user_created_fork:fork-aaa-project-2,2012-09-19 05:04:47.275211
1155 1207,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:12.945275
1155 1207,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:12.945275
1156 1208,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:21.140947
1156 1208,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:21.140947
1157 1209,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:26.061929
1157 1209,203,f.ludwig,223,florian-test-fork,"",user_commented_revision:028186940dbf5db5818c2c0a9ff80f214da0fd3f,2012-09-19 10:34:26.061929
1158 1210,1,default,68,aaa-project,74.125.184.38,pull,2012-09-19 15:23:03.784613
1158 1210,1,default,68,aaa-project,74.125.184.38,pull,2012-09-19 15:23:03.784613
1159 1211,3,demo,68,aaa-project,74.125.184.23,push:8c632d9ca9fa402f585385c3bbadc139d6d085a9,2012-09-19 15:24:52.655487
1159 1211,3,demo,68,aaa-project,74.125.184.23,push:8c632d9ca9fa402f585385c3bbadc139d6d085a9,2012-09-19 15:24:52.655487
1160 1212,214,am385,228,Testbed101,"",started_following_repo,2012-09-19 20:56:01.838629
1160 1212,214,am385,228,Testbed101,"",started_following_repo,2012-09-19 20:56:01.838629
1161 1213,214,am385,228,Testbed101,"",user_created_repo,2012-09-19 20:56:01.853795
1161 1213,214,am385,228,Testbed101,"",user_created_repo,2012-09-19 20:56:01.853795
1162 1214,214,am385,228,Testbed101,"",push_local:20cfcd314a6eae3cc3f83ac57e3f3d0bfbd12bfa,2012-09-19 21:02:39.003808
1162 1214,214,am385,228,Testbed101,"",push_local:20cfcd314a6eae3cc3f83ac57e3f3d0bfbd12bfa,2012-09-19 21:02:39.003808
1163 1215,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-20 00:05:46.898686
1163 1215,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-09-20 00:05:46.898686
1164 1216,1,default,122,amab,64.0.193.29,pull,2012-09-20 08:28:43.327263
1164 1216,1,default,122,amab,64.0.193.29,pull,2012-09-20 08:28:43.327263
1165 1217,3,demo,205,releases/fork-Sopra_testgd,"",user_commented_revision:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-20 09:35:54.589279
1165 1217,3,demo,205,releases/fork-Sopra_testgd,"",user_commented_revision:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-20 09:35:54.589279
1166 1218,3,demo,205,releases/fork-Sopra_testgd,"",user_commented_revision:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-20 09:37:33.380842
1166 1218,3,demo,205,releases/fork-Sopra_testgd,"",user_commented_revision:99095f2d5703cbc43294ef55a19c5cc9e4cc2c15,2012-09-20 09:37:33.380842
1167 1219,3,demo,204,releases/Sopra_testgd,"",user_commented_pull_request:46,2012-09-20 09:38:40.617161
1167 1219,3,demo,204,releases/Sopra_testgd,"",user_commented_pull_request:46,2012-09-20 09:38:40.617161
1168 1220,3,demo,204,releases/Sopra_testgd,"",user_closed_pull_request:46,2012-09-20 09:38:40.624018
1168 1220,3,demo,204,releases/Sopra_testgd,"",user_closed_pull_request:46,2012-09-20 09:38:40.624018
1169 1221,3,demo,229,blaat,"",started_following_repo,2012-09-20 19:20:37.921692
1169 1221,3,demo,229,blaat,"",started_following_repo,2012-09-20 19:20:37.921692
1170 1222,3,demo,229,blaat,"",user_created_repo,2012-09-20 19:20:37.930827
1170 1222,3,demo,229,blaat,"",user_created_repo,2012-09-20 19:20:37.930827
1171 1223,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-20 20:07:29.000255
1171 1223,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-09-20 20:07:29.000255
1172 1224,3,demo,230,eks1,"",started_following_repo,2012-09-20 20:42:54.376374
1172 1224,3,demo,230,eks1,"",started_following_repo,2012-09-20 20:42:54.376374
1173 1225,3,demo,230,eks1,"",user_created_repo,2012-09-20 20:42:54.385712
1173 1225,3,demo,230,eks1,"",user_created_repo,2012-09-20 20:42:54.385712
1174 1226,3,demo,230,eks1,216.191.220.77,push:f58be25d36113902d50783abb44d7bcbc62e4eb7,2012-09-20 20:46:36.378744
1174 1226,3,demo,230,eks1,216.191.220.77,push:f58be25d36113902d50783abb44d7bcbc62e4eb7,2012-09-20 20:46:36.378744
1175 1227,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:13.533037
1175 1227,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:13.533037
1176 1228,3,demo,230,eks1,216.191.220.77,push:cc064b1c1831e9b5b1db6b9c72a7404b111b579a,2012-09-20 20:47:42.815309
1176 1228,3,demo,230,eks1,216.191.220.77,push:cc064b1c1831e9b5b1db6b9c72a7404b111b579a,2012-09-20 20:47:42.815309
1177 1229,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:53.706376
1177 1229,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:53.706376
1178 1230,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:58.020108
1178 1230,1,default,230,eks1,216.191.220.77,pull,2012-09-20 20:47:58.020108
1179 1231,3,demo,230,eks1,"",user_commented_revision:f58be25d36113902d50783abb44d7bcbc62e4eb7,2012-09-20 20:48:53.742614
1179 1231,3,demo,230,eks1,"",user_commented_revision:f58be25d36113902d50783abb44d7bcbc62e4eb7,2012-09-20 20:48:53.742614
1180 1232,3,demo,230,eks1,"",user_commented_revision:cc064b1c1831e9b5b1db6b9c72a7404b111b579a,2012-09-20 20:49:30.403129
1180 1232,3,demo,230,eks1,"",user_commented_revision:cc064b1c1831e9b5b1db6b9c72a7404b111b579a,2012-09-20 20:49:30.403129
1181 1233,3,demo,231,fork-eks1,"",started_following_repo,2012-09-20 20:51:24.23117
1181 1233,3,demo,231,fork-eks1,"",started_following_repo,2012-09-20 20:51:24.23117
1182 1234,3,demo,230,eks1,"",user_forked_repo:fork-eks1,2012-09-20 20:51:24.242627
1182 1234,3,demo,230,eks1,"",user_forked_repo:fork-eks1,2012-09-20 20:51:24.242627
1183 1235,3,demo,231,fork-eks1,"",user_created_fork:fork-eks1,2012-09-20 20:51:24.249831
1183 1235,3,demo,231,fork-eks1,"",user_created_fork:fork-eks1,2012-09-20 20:51:24.249831
1184 1236,1,default,231,fork-eks1,216.191.220.77,pull,2012-09-20 20:51:52.699176
1184 1236,1,default,231,fork-eks1,216.191.220.77,pull,2012-09-20 20:51:52.699176
1185 1237,3,demo,231,fork-eks1,216.191.220.77,push:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-09-20 20:52:17.107154
1185 1237,3,demo,231,fork-eks1,216.191.220.77,push:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-09-20 20:52:17.107154
1186 1238,3,demo,230,eks1,"",user_commented_pull_request:53,2012-09-20 20:57:09.709452
1186 1238,3,demo,230,eks1,"",user_commented_pull_request:53,2012-09-20 20:57:09.709452
1187 1239,3,demo,230,eks1,"",user_commented_pull_request:53,2012-09-20 20:59:58.813611
1187 1239,3,demo,230,eks1,"",user_commented_pull_request:53,2012-09-20 20:59:58.813611
1188 1240,3,demo,230,eks1,"",user_closed_pull_request:53,2012-09-20 20:59:58.820711
1188 1240,3,demo,230,eks1,"",user_closed_pull_request:53,2012-09-20 20:59:58.820711
1189 1241,3,demo,230,eks1,"",user_commented_pull_request:54,2012-09-20 21:02:22.161549
1189 1241,3,demo,230,eks1,"",user_commented_pull_request:54,2012-09-20 21:02:22.161549
1190 1242,3,demo,230,eks1,"",user_closed_pull_request:54,2012-09-20 21:02:22.167313
1190 1242,3,demo,230,eks1,"",user_closed_pull_request:54,2012-09-20 21:02:22.167313
1191 1243,1,default,231,fork-eks1,216.191.220.77,pull,2012-09-20 23:22:45.505072
1191 1243,1,default,231,fork-eks1,216.191.220.77,pull,2012-09-20 23:22:45.505072
1192 1244,3,demo,230,eks1,216.191.220.77,push:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-09-20 23:24:42.752414
1192 1244,3,demo,230,eks1,216.191.220.77,push:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-09-20 23:24:42.752414
1193 1245,3,demo,231,fork-eks1,216.191.220.77,push:1a4b7771bd03e57d3a9854efd18de0d7d66db5d8,2012-09-20 23:25:49.109081
1193 1245,3,demo,231,fork-eks1,216.191.220.77,push:1a4b7771bd03e57d3a9854efd18de0d7d66db5d8,2012-09-20 23:25:49.109081
1194 1246,216,eks,232,eks1-eksfork,"",started_following_repo,2012-09-20 23:33:21.433073
1194 1246,216,eks,232,eks1-eksfork,"",started_following_repo,2012-09-20 23:33:21.433073
1195 1247,216,eks,230,eks1,"",user_forked_repo:eks1-eksfork,2012-09-20 23:33:21.446723
1195 1247,216,eks,230,eks1,"",user_forked_repo:eks1-eksfork,2012-09-20 23:33:21.446723
1196 1248,216,eks,232,eks1-eksfork,"",user_created_fork:eks1-eksfork,2012-09-20 23:33:21.453956
1196 1248,216,eks,232,eks1-eksfork,"",user_created_fork:eks1-eksfork,2012-09-20 23:33:21.453956
1197 1249,1,default,232,eks1-eksfork,216.191.220.77,pull,2012-09-20 23:36:06.736653
1197 1249,1,default,232,eks1-eksfork,216.191.220.77,pull,2012-09-20 23:36:06.736653
1198 1250,1,default,122,amab,176.9.28.203,pull,2012-09-21 01:56:49.09876
1198 1250,1,default,122,amab,176.9.28.203,pull,2012-09-21 01:56:49.09876
1199 1251,3,demo,233,clonetest,"",started_following_repo,2012-09-21 01:56:49.309535
1199 1251,3,demo,233,clonetest,"",started_following_repo,2012-09-21 01:56:49.309535
1200 1252,3,demo,233,clonetest,"",user_created_repo,2012-09-21 01:56:49.327352
1200 1252,3,demo,233,clonetest,"",user_created_repo,2012-09-21 01:56:49.327352
1201 1253,217,domvign,234,fork2-tord,"",started_following_repo,2012-09-21 03:45:07.090078
1201 1253,217,domvign,234,fork2-tord,"",started_following_repo,2012-09-21 03:45:07.090078
1202 1254,217,domvign,201,tord,"",user_forked_repo:fork2-tord,2012-09-21 03:45:07.111893
1202 1254,217,domvign,201,tord,"",user_forked_repo:fork2-tord,2012-09-21 03:45:07.111893
1203 1255,217,domvign,234,fork2-tord,"",user_created_fork:fork2-tord,2012-09-21 03:45:07.125832
1203 1255,217,domvign,234,fork2-tord,"",user_created_fork:fork2-tord,2012-09-21 03:45:07.125832
1204 1256,3,demo,235,test_test1,"",started_following_repo,2012-09-21 08:25:55.301672
1204 1256,3,demo,235,test_test1,"",started_following_repo,2012-09-21 08:25:55.301672
1205 1257,3,demo,235,test_test1,"",user_created_repo,2012-09-21 08:25:55.312484
1205 1257,3,demo,235,test_test1,"",user_created_repo,2012-09-21 08:25:55.312484
1206 1258,3,demo,235,test_test1,"",push_local:49f5d4efef5c24a6c82f3f56c750f6bd29d7e65c,2012-09-21 08:27:48.618627
1206 1258,3,demo,235,test_test1,"",push_local:49f5d4efef5c24a6c82f3f56c750f6bd29d7e65c,2012-09-21 08:27:48.618627
1207 1259,3,demo,197,CollectionQuery,"",user_commented_revision:c51ad09cfdf5ae85a70c0210febc2692bdd0e0db,2012-09-21 10:14:32.510501
1207 1259,3,demo,197,CollectionQuery,"",user_commented_revision:c51ad09cfdf5ae85a70c0210febc2692bdd0e0db,2012-09-21 10:14:32.510501
1208 1260,218,akesterson,236,myfork-CollectionQuery,"",started_following_repo,2012-09-21 14:45:19.861126
1208 1260,218,akesterson,236,myfork-CollectionQuery,"",started_following_repo,2012-09-21 14:45:19.861126
1209 1261,218,akesterson,197,CollectionQuery,"",user_forked_repo:myfork-CollectionQuery,2012-09-21 14:45:19.889428
1209 1261,218,akesterson,197,CollectionQuery,"",user_forked_repo:myfork-CollectionQuery,2012-09-21 14:45:19.889428
1210 1262,218,akesterson,236,myfork-CollectionQuery,"",user_created_fork:myfork-CollectionQuery,2012-09-21 14:45:19.903413
1210 1262,218,akesterson,236,myfork-CollectionQuery,"",user_created_fork:myfork-CollectionQuery,2012-09-21 14:45:19.903413
1211 1263,218,akesterson,236,myfork-CollectionQuery,"",push_local:02029afb80de14455a4226a4a77b760b895aff7e,2012-09-21 14:46:12.771297
1211 1263,218,akesterson,236,myfork-CollectionQuery,"",push_local:02029afb80de14455a4226a4a77b760b895aff7e,2012-09-21 14:46:12.771297
1212 1264,218,akesterson,236,myfork-CollectionQuery,"",push_local:2def3b046d2221aba86f5c9f1adb7259725bc8f5,2012-09-21 14:46:37.060973
1212 1264,218,akesterson,236,myfork-CollectionQuery,"",push_local:2def3b046d2221aba86f5c9f1adb7259725bc8f5,2012-09-21 14:46:37.060973
1213 1265,218,akesterson,237,fork-myfork-CollectionQuery,"",started_following_repo,2012-09-21 14:48:05.149741
1213 1265,218,akesterson,237,fork-myfork-CollectionQuery,"",started_following_repo,2012-09-21 14:48:05.149741
1214 1266,218,akesterson,236,myfork-CollectionQuery,"",user_forked_repo:fork-myfork-CollectionQuery,2012-09-21 14:48:05.166032
1214 1266,218,akesterson,236,myfork-CollectionQuery,"",user_forked_repo:fork-myfork-CollectionQuery,2012-09-21 14:48:05.166032
1215 1267,218,akesterson,237,fork-myfork-CollectionQuery,"",user_created_fork:fork-myfork-CollectionQuery,2012-09-21 14:48:05.176775
1215 1267,218,akesterson,237,fork-myfork-CollectionQuery,"",user_created_fork:fork-myfork-CollectionQuery,2012-09-21 14:48:05.176775
1216 1268,218,akesterson,237,fork-myfork-CollectionQuery,"",push_local:2300a2cb9c42bf638a156fcbe8cebfed710bd8e6,2012-09-21 14:49:48.45509
1216 1268,218,akesterson,237,fork-myfork-CollectionQuery,"",push_local:2300a2cb9c42bf638a156fcbe8cebfed710bd8e6,2012-09-21 14:49:48.45509
1217 1269,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:57,2012-09-21 14:51:01.214716
1217 1269,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:57,2012-09-21 14:51:01.214716
1218 1270,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:58,2012-09-21 14:52:20.163131
1218 1270,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:58,2012-09-21 14:52:20.163131
1219 1271,218,akesterson,236,myfork-CollectionQuery,"",user_closed_pull_request:58,2012-09-21 14:52:20.17166
1219 1271,218,akesterson,236,myfork-CollectionQuery,"",user_closed_pull_request:58,2012-09-21 14:52:20.17166
1220 1275,218,akesterson,237,fork-myfork-CollectionQuery,"",push_local:73fcef6d2abe2dc061da59086561c7854266a78c,2012-09-21 14:56:02.339532
1220 1275,218,akesterson,237,fork-myfork-CollectionQuery,"",push_local:73fcef6d2abe2dc061da59086561c7854266a78c,2012-09-21 14:56:02.339532
1221 1276,218,akesterson,238,fork2-myfork-CollectionQuery,"",started_following_repo,2012-09-21 15:11:55.391857
1221 1276,218,akesterson,238,fork2-myfork-CollectionQuery,"",started_following_repo,2012-09-21 15:11:55.391857
1222 1277,218,akesterson,236,myfork-CollectionQuery,"",user_forked_repo:fork2-myfork-CollectionQuery,2012-09-21 15:11:55.415225
1222 1277,218,akesterson,236,myfork-CollectionQuery,"",user_forked_repo:fork2-myfork-CollectionQuery,2012-09-21 15:11:55.415225
1223 1278,218,akesterson,238,fork2-myfork-CollectionQuery,"",user_created_fork:fork2-myfork-CollectionQuery,2012-09-21 15:11:55.429075
1223 1278,218,akesterson,238,fork2-myfork-CollectionQuery,"",user_created_fork:fork2-myfork-CollectionQuery,2012-09-21 15:11:55.429075
1224 1279,218,akesterson,238,fork2-myfork-CollectionQuery,"",push_local:c29afd42fdfc5ef1d786ba0575a72c6a7991887b,2012-09-21 15:12:20.646365
1224 1279,218,akesterson,238,fork2-myfork-CollectionQuery,"",push_local:c29afd42fdfc5ef1d786ba0575a72c6a7991887b,2012-09-21 15:12:20.646365
1225 1280,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:59,2012-09-21 15:13:11.024446
1225 1280,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:59,2012-09-21 15:13:11.024446
1226 1281,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:59,2012-09-21 15:14:21.074425
1226 1281,218,akesterson,236,myfork-CollectionQuery,"",user_commented_pull_request:59,2012-09-21 15:14:21.074425
1227 1282,218,akesterson,236,myfork-CollectionQuery,"",user_closed_pull_request:59,2012-09-21 15:14:21.083354
1227 1282,218,akesterson,236,myfork-CollectionQuery,"",user_closed_pull_request:59,2012-09-21 15:14:21.083354
1228 1283,27,test123,38,code-review-test,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-09-21 20:57:25.108349
1228 1283,27,test123,38,code-review-test,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-09-21 20:57:25.108349
1229 1284,27,test123,38,code-review-test,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-09-21 20:58:03.041734
1229 1284,27,test123,38,code-review-test,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-09-21 20:58:03.041734
1230 1285,3,demo,233,clonetest,"",user_commented_revision:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-09-23 15:45:55.650268
1230 1285,3,demo,233,clonetest,"",user_commented_revision:8530d8e3eab04997ac4a2a5d8a8b54fa61bb9884,2012-09-23 15:45:55.650268
1231 1286,3,demo,197,CollectionQuery,"",stopped_following_repo,2012-09-23 15:47:09.082723
1231 1286,3,demo,197,CollectionQuery,"",stopped_following_repo,2012-09-23 15:47:09.082723
1232 1287,3,demo,197,CollectionQuery,"",started_following_repo,2012-09-23 15:47:10.981914
1232 1287,3,demo,197,CollectionQuery,"",started_following_repo,2012-09-23 15:47:10.981914
1233 1288,3,demo,42,foo,"",user_updated_repo,2012-09-24 08:58:54.191524
1233 1288,3,demo,42,foo,"",user_updated_repo,2012-09-24 08:58:54.191524
1234 1289,3,demo,1,test,"",user_commented_pull_request:60,2012-09-24 20:09:58.857304
1234 1289,3,demo,1,test,"",user_commented_pull_request:60,2012-09-24 20:09:58.857304
1235 1290,3,demo,239,w,"",started_following_repo,2012-09-25 05:06:46.054337
1235 1290,3,demo,239,w,"",started_following_repo,2012-09-25 05:06:46.054337
1236 1291,3,demo,239,w,"",user_created_repo,2012-09-25 05:06:46.066475
1236 1291,3,demo,239,w,"",user_created_repo,2012-09-25 05:06:46.066475
1237 1292,3,demo,240,superTest,"",started_following_repo,2012-09-25 05:07:49.733782
1237 1292,3,demo,240,superTest,"",started_following_repo,2012-09-25 05:07:49.733782
1238 1293,3,demo,240,superTest,"",user_created_repo,2012-09-25 05:07:49.743076
1238 1293,3,demo,240,superTest,"",user_created_repo,2012-09-25 05:07:49.743076
1239 1294,3,demo,34,a,"",user_updated_repo,2012-09-25 05:16:48.876018
1239 1294,3,demo,34,a,"",user_updated_repo,2012-09-25 05:16:48.876018
1240 1295,3,demo,241,fork-a2,"",started_following_repo,2012-09-25 10:40:13.278898
1240 1295,3,demo,241,fork-a2,"",started_following_repo,2012-09-25 10:40:13.278898
1241 1296,3,demo,34,a,"",user_forked_repo:fork-a2,2012-09-25 10:40:13.299758
1241 1296,3,demo,34,a,"",user_forked_repo:fork-a2,2012-09-25 10:40:13.299758
1242 1297,3,demo,241,fork-a2,"",user_created_fork:fork-a2,2012-09-25 10:40:13.313299
1242 1297,3,demo,241,fork-a2,"",user_created_fork:fork-a2,2012-09-25 10:40:13.313299
1243 1298,3,demo,241,fork-a2,"",push_local:7f7ca797917c69ae6cfdab99b428fe67aebd764d,2012-09-25 10:40:41.937706
1243 1298,3,demo,241,fork-a2,"",push_local:7f7ca797917c69ae6cfdab99b428fe67aebd764d,2012-09-25 10:40:41.937706
1244 1299,3,demo,34,a,"",user_commented_pull_request:61,2012-09-25 10:43:24.263815
1244 1299,3,demo,34,a,"",user_commented_pull_request:61,2012-09-25 10:43:24.263815
1245 1300,3,demo,34,a,"",user_closed_pull_request:61,2012-09-25 10:43:24.268374
1245 1300,3,demo,34,a,"",user_closed_pull_request:61,2012-09-25 10:43:24.268374
1246 1301,3,demo,242,testtest,"",started_following_repo,2012-09-25 19:58:30.104927
1246 1301,3,demo,242,testtest,"",started_following_repo,2012-09-25 19:58:30.104927
1247 1302,3,demo,242,testtest,"",user_created_repo,2012-09-25 19:58:30.114632
1247 1302,3,demo,242,testtest,"",user_created_repo,2012-09-25 19:58:30.114632
1248 1303,3,demo,242,testtest,50.76.185.37,"push:82cc04e644fb4ac2202d6d38c3f98e1ac583fbd9,0c51202e5f9ac63b0f54eb5229f1850b430c3186,e5b80b681b96b37265d212ff97f655ae97f920c9,bacfc2c685668fb52d13bf438086167929628a4e,19a96e811fcce0440161ac77fa28feb608edfbc6,5a35e5e9d69b0d84199ca2477f596e0684f1d632,643146ee8f6e0798c2a6a6fdbe4dce9eff7776f2,6a0c17c8020c04ab67e055d4c4aec03e29ca7ad6,978d9e35d3bb27a2ef3b2fec04a15492f1d61970,bc1cc5164ef4bad7bbdb17caf14894f92d5d111f,331d14ee58a0530c7fd3c41537b4d247ae9d9ad6,404df8cdf4d474f97420a830d01aee7fbd2ea776,e2930d41a1769be193c2605be14532f3cc2cc162,59ae718e69abd66a3014356bf876f66db2a874b8,96163b25ae03a682d0582d4033649ee58e0fccee,66bada0d3d62a4b4b92de4e3e8d4b02d765a7326,63c17351ec88d5628ba7a2ce01ff08d1f519d7e2,e2949eadc403df055a58c7e0892926e53c38f872,2faef02e93acd948fcce2279d6d6f81da7e3a301,5e919a6fd85fab8b90a8b62d00e463dfcc4d21b6,06ebdbdf1a1b41a7c050d52a022be408a1437951,d37662b26d07c70ad4b4732fac696a7e7fa9685c,e07b358c22daf4e8b45e4ab869c1137c2b7dd0d5,d82075dcdcec0739ddcad0bcb96b671f6a3d3c7b,6866e9be9fde15aaf2a8639a931410089275db45,977fa64f7f1bd526a04cbc701683e3b789221a9c,ca4d6af6c64afeb8d4589002421038314ead455a",2012-09-25 19:59:54.485036
1248 1303,3,demo,242,testtest,50.76.185.37,"push:82cc04e644fb4ac2202d6d38c3f98e1ac583fbd9,0c51202e5f9ac63b0f54eb5229f1850b430c3186,e5b80b681b96b37265d212ff97f655ae97f920c9,bacfc2c685668fb52d13bf438086167929628a4e,19a96e811fcce0440161ac77fa28feb608edfbc6,5a35e5e9d69b0d84199ca2477f596e0684f1d632,643146ee8f6e0798c2a6a6fdbe4dce9eff7776f2,6a0c17c8020c04ab67e055d4c4aec03e29ca7ad6,978d9e35d3bb27a2ef3b2fec04a15492f1d61970,bc1cc5164ef4bad7bbdb17caf14894f92d5d111f,331d14ee58a0530c7fd3c41537b4d247ae9d9ad6,404df8cdf4d474f97420a830d01aee7fbd2ea776,e2930d41a1769be193c2605be14532f3cc2cc162,59ae718e69abd66a3014356bf876f66db2a874b8,96163b25ae03a682d0582d4033649ee58e0fccee,66bada0d3d62a4b4b92de4e3e8d4b02d765a7326,63c17351ec88d5628ba7a2ce01ff08d1f519d7e2,e2949eadc403df055a58c7e0892926e53c38f872,2faef02e93acd948fcce2279d6d6f81da7e3a301,5e919a6fd85fab8b90a8b62d00e463dfcc4d21b6,06ebdbdf1a1b41a7c050d52a022be408a1437951,d37662b26d07c70ad4b4732fac696a7e7fa9685c,e07b358c22daf4e8b45e4ab869c1137c2b7dd0d5,d82075dcdcec0739ddcad0bcb96b671f6a3d3c7b,6866e9be9fde15aaf2a8639a931410089275db45,977fa64f7f1bd526a04cbc701683e3b789221a9c,ca4d6af6c64afeb8d4589002421038314ead455a",2012-09-25 19:59:54.485036
1249 1304,3,demo,34,a,"",push_local:98b22b6458fc028d5b8beb740d39372e72d8f41f,2012-09-25 21:22:16.676417
1249 1304,3,demo,34,a,"",push_local:98b22b6458fc028d5b8beb740d39372e72d8f41f,2012-09-25 21:22:16.676417
1250 1305,3,demo,34,a,76.112.55.52,pull,2012-09-25 21:26:13.528081
1250 1305,3,demo,34,a,76.112.55.52,pull,2012-09-25 21:26:13.528081
1251 1306,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-26 15:07:40.4856
1251 1306,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-26 15:07:40.4856
1252 1307,3,demo,243,SR3HF2,"",started_following_repo,2012-09-26 16:53:58.744798
1252 1307,3,demo,243,SR3HF2,"",started_following_repo,2012-09-26 16:53:58.744798
1253 1308,3,demo,243,SR3HF2,"",user_created_repo,2012-09-26 16:53:58.760782
1253 1308,3,demo,243,SR3HF2,"",user_created_repo,2012-09-26 16:53:58.760782
1254 1309,3,demo,243,SR3HF2,"",push_local:d9cf639344ea84f1a5c57f9ce10c043f1b446e08,2012-09-26 17:05:27.808045
1254 1309,3,demo,243,SR3HF2,"",push_local:d9cf639344ea84f1a5c57f9ce10c043f1b446e08,2012-09-26 17:05:27.808045
1255 1310,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:10:30.366062
1255 1310,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:10:30.366062
1256 1311,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:11:11.747863
1256 1311,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:11:11.747863
1257 1312,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:11:48.355287
1257 1312,3,demo,243,SR3HF2,"",user_updated_repo,2012-09-26 17:11:48.355287
1258 1313,230,AstrasyA,244,Sonny,"",started_following_repo,2012-09-26 17:43:33.022333
1258 1313,230,AstrasyA,244,Sonny,"",started_following_repo,2012-09-26 17:43:33.022333
1259 1314,230,AstrasyA,244,Sonny,"",user_created_repo,2012-09-26 17:43:33.033696
1259 1314,230,AstrasyA,244,Sonny,"",user_created_repo,2012-09-26 17:43:33.033696
1260 1315,230,AstrasyA,244,Sonny,"",push_local:9732b5c4fdde74545ca40878530e804712c4e445,2012-09-26 17:44:35.341457
1260 1315,230,AstrasyA,244,Sonny,"",push_local:9732b5c4fdde74545ca40878530e804712c4e445,2012-09-26 17:44:35.341457
1261 1316,230,AstrasyA,244,Sonny,50.84.107.130,pull,2012-09-26 17:59:06.387257
1261 1316,230,AstrasyA,244,Sonny,50.84.107.130,pull,2012-09-26 17:59:06.387257
1262 1317,230,AstrasyA,244,Sonny,50.84.107.130,"push:98d933718544ec91d426b6b37f091f6f0501b3dc,334ac777d05f4653887569cb2b68ea7c255cf929",2012-09-26 18:27:38.08683
1262 1317,230,AstrasyA,244,Sonny,50.84.107.130,"push:98d933718544ec91d426b6b37f091f6f0501b3dc,334ac777d05f4653887569cb2b68ea7c255cf929",2012-09-26 18:27:38.08683
1263 1318,230,AstrasyA,244,Sonny,50.84.107.130,push:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 18:43:41.784818
1263 1318,230,AstrasyA,244,Sonny,50.84.107.130,push:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 18:43:41.784818
1264 1319,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:34:58.000965
1264 1319,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:34:58.000965
1265 1320,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:35:02.910074
1265 1320,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:35:02.910074
1266 1321,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:35:13.500416
1266 1321,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:35:13.500416
1267 1322,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:37:13.951346
1267 1322,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:37:13.951346
1268 1323,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:37:19.504417
1268 1323,230,AstrasyA,244,Sonny,"",user_commented_revision:57eaee8ade535415036f1e9fada104edd1db8389,2012-09-26 19:37:19.504417
1269 1324,3,demo,245,SubrepoTest,"",started_following_repo,2012-09-26 21:03:21.25341
1269 1324,3,demo,245,SubrepoTest,"",started_following_repo,2012-09-26 21:03:21.25341
1270 1325,3,demo,245,SubrepoTest,"",user_created_repo,2012-09-26 21:03:21.266132
1270 1325,3,demo,245,SubrepoTest,"",user_created_repo,2012-09-26 21:03:21.266132
1271 1326,3,demo,246,SubrepoTest-subrepo,"",started_following_repo,2012-09-26 21:04:08.921652
1271 1326,3,demo,246,SubrepoTest-subrepo,"",started_following_repo,2012-09-26 21:04:08.921652
1272 1327,3,demo,246,SubrepoTest-subrepo,"",user_created_repo,2012-09-26 21:04:08.935788
1272 1327,3,demo,246,SubrepoTest-subrepo,"",user_created_repo,2012-09-26 21:04:08.935788
1273 1328,230,AstrasyA,244,Sonny,50.84.107.130,"push:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,8543508ae6664832fe59cd4f6587add1b69c6db3",2012-09-26 22:49:33.613712
1273 1328,230,AstrasyA,244,Sonny,50.84.107.130,"push:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,8543508ae6664832fe59cd4f6587add1b69c6db3",2012-09-26 22:49:33.613712
1274 1329,230,AstrasyA,244,Sonny,"",user_commented_revision:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,2012-09-26 22:54:09.170876
1274 1329,230,AstrasyA,244,Sonny,"",user_commented_revision:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,2012-09-26 22:54:09.170876
1275 1330,230,AstrasyA,244,Sonny,"",user_commented_revision:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,2012-09-26 22:54:21.612237
1275 1330,230,AstrasyA,244,Sonny,"",user_commented_revision:4d583f24f1984fd21a8038d60ae510cd8e0d5b8c,2012-09-26 22:54:21.612237
1276 1331,1,default,159,group/Test-for-code-review,"",push_local:4471d93e69c9abb14c65ac96a349fd642269a337,2012-09-27 01:26:37.747241
1276 1331,1,default,159,group/Test-for-code-review,"",push_local:4471d93e69c9abb14c65ac96a349fd642269a337,2012-09-27 01:26:37.747241
1277 1332,231,asdf,247,fork-a-fork1,"",started_following_repo,2012-09-27 02:13:08.518743
1277 1332,231,asdf,247,fork-a-fork1,"",started_following_repo,2012-09-27 02:13:08.518743
1278 1333,231,asdf,90,a-fork1,"",user_forked_repo:fork-a-fork1,2012-09-27 02:13:08.536794
1278 1333,231,asdf,90,a-fork1,"",user_forked_repo:fork-a-fork1,2012-09-27 02:13:08.536794
1279 1334,231,asdf,247,fork-a-fork1,"",user_created_fork:fork-a-fork1,2012-09-27 02:13:08.54404
1279 1334,231,asdf,247,fork-a-fork1,"",user_created_fork:fork-a-fork1,2012-09-27 02:13:08.54404
1280 1335,3,demo,248,_KBTEST,"",started_following_repo,2012-09-27 06:39:50.386213
1280 1335,3,demo,248,_KBTEST,"",started_following_repo,2012-09-27 06:39:50.386213
1281 1336,3,demo,248,_KBTEST,"",user_created_repo,2012-09-27 06:39:50.395378
1281 1336,3,demo,248,_KBTEST,"",user_created_repo,2012-09-27 06:39:50.395378
1282 1337,232,demo123,249,abcdefg,"",started_following_repo,2012-09-27 09:46:45.351423
1282 1337,232,demo123,249,abcdefg,"",started_following_repo,2012-09-27 09:46:45.351423
1283 1338,232,demo123,127,my-super-rep,"",user_forked_repo:abcdefg,2012-09-27 09:46:45.389459
1283 1338,232,demo123,127,my-super-rep,"",user_forked_repo:abcdefg,2012-09-27 09:46:45.389459
1284 1339,232,demo123,249,abcdefg,"",user_created_fork:abcdefg,2012-09-27 09:46:45.396765
1284 1339,232,demo123,249,abcdefg,"",user_created_fork:abcdefg,2012-09-27 09:46:45.396765
1285 1340,232,demo123,249,abcdefg,"",push_local:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-09-27 09:48:20.630491
1285 1340,232,demo123,249,abcdefg,"",push_local:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-09-27 09:48:20.630491
1286 1341,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:50:27.609218
1286 1341,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:50:27.609218
1287 1342,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:50:44.558277
1287 1342,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:50:44.558277
1288 1343,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:51:28.711229
1288 1343,232,demo123,127,my-super-rep,"",user_commented_pull_request:62,2012-09-27 09:51:28.711229
1289 1344,1,default,159,group/Test-for-code-review,"",push_local:f7383651e85c99e62e22e662b137790efa70660c,2012-09-27 11:10:12.51927
1289 1344,1,default,159,group/Test-for-code-review,"",push_local:f7383651e85c99e62e22e662b137790efa70660c,2012-09-27 11:10:12.51927
1290 1345,233,mecoder,250,mecodertest,"",started_following_repo,2012-09-27 12:22:22.89884
1290 1345,233,mecoder,250,mecodertest,"",started_following_repo,2012-09-27 12:22:22.89884
1291 1346,233,mecoder,250,mecodertest,"",user_created_repo,2012-09-27 12:22:22.907773
1291 1346,233,mecoder,250,mecodertest,"",user_created_repo,2012-09-27 12:22:22.907773
1292 1347,77,test,251,test1234,"",started_following_repo,2012-09-27 14:22:54.649441
1292 1347,77,test,251,test1234,"",started_following_repo,2012-09-27 14:22:54.649441
1293 1348,77,test,251,test1234,"",user_created_repo,2012-09-27 14:22:54.658343
1293 1348,77,test,251,test1234,"",user_created_repo,2012-09-27 14:22:54.658343
1294 1349,1,default,86,qbtest,"",push_local:3875428f3bdcab3cfa74759a40182c6a643e4203,2012-09-27 14:49:57.797524
1294 1349,1,default,86,qbtest,"",push_local:3875428f3bdcab3cfa74759a40182c6a643e4203,2012-09-27 14:49:57.797524
1295 1350,3,demo,252,Test-repo,"",started_following_repo,2012-09-27 20:14:53.658366
1295 1350,3,demo,252,Test-repo,"",started_following_repo,2012-09-27 20:14:53.658366
1296 1351,3,demo,252,Test-repo,"",user_created_repo,2012-09-27 20:14:53.667343
1296 1351,3,demo,252,Test-repo,"",user_created_repo,2012-09-27 20:14:53.667343
1297 1352,3,demo,252,Test-repo,"",user_updated_repo,2012-09-27 20:16:25.412816
1297 1352,3,demo,252,Test-repo,"",user_updated_repo,2012-09-27 20:16:25.412816
1298 1353,235,wryfi,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-27 21:40:52.517897
1298 1353,235,wryfi,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-27 21:40:52.517897
1299 1354,235,wryfi,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-27 21:41:45.427104
1299 1354,235,wryfi,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-09-27 21:41:45.427104
1300 1355,1,default,86,qbtest,"",push_local:bed2107c6d7286a5645a27da26183fe6035e58ef,2012-09-28 01:02:08.90859
1300 1355,1,default,86,qbtest,"",push_local:bed2107c6d7286a5645a27da26183fe6035e58ef,2012-09-28 01:02:08.90859
1301 1356,1,default,68,aaa-project,24.237.22.151,pull,2012-09-28 02:40:56.789606
1301 1356,1,default,68,aaa-project,24.237.22.151,pull,2012-09-28 02:40:56.789606
1302 1357,1,default,68,aaa-project,24.237.22.151,pull,2012-09-28 02:41:08.302352
1302 1357,1,default,68,aaa-project,24.237.22.151,pull,2012-09-28 02:41:08.302352
1303 1358,1,default,159,group/Test-for-code-review,"",push_local:56533e7a81a9c1c68125dc45ac78c050791fd0a2,2012-09-28 10:06:43.559824
1303 1358,1,default,159,group/Test-for-code-review,"",push_local:56533e7a81a9c1c68125dc45ac78c050791fd0a2,2012-09-28 10:06:43.559824
1304 1359,2,admin,,"","",admin_created_user:ip,2012-09-28 22:22:59.371488
1304 1359,2,admin,,"","",admin_created_user:ip,2012-09-28 22:22:59.371488
1305 1360,2,admin,253,ip,"",started_following_repo,2012-09-28 22:23:19.263438
1305 1360,2,admin,253,ip,"",started_following_repo,2012-09-28 22:23:19.263438
1306 1361,2,admin,253,ip,"",admin_created_repo,2012-09-28 22:23:19.277556
1306 1361,2,admin,253,ip,"",admin_created_repo,2012-09-28 22:23:19.277556
1307 1362,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:24:27.358795
1307 1362,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:24:27.358795
1308 1363,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:24:40.194254
1308 1363,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:24:40.194254
1309 1364,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:03.078491
1309 1364,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:03.078491
1310 1365,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:25.793178
1310 1365,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:25.793178
1311 1366,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:35.065161
1311 1366,2,admin,253,ip,"",admin_updated_repo,2012-09-28 22:25:35.065161
1312 1367,1,default,159,group/Test-for-code-review,"",push_local:6900b7e43c402939ee2d058b8ad94cce31cb6dcd,2012-09-29 00:17:35.860963
1312 1367,1,default,159,group/Test-for-code-review,"",push_local:6900b7e43c402939ee2d058b8ad94cce31cb6dcd,2012-09-29 00:17:35.860963
1313 1368,1,default,86,qbtest,"",push_local:73eb33fa1edfc909f673d128bac55bd175aa7559,2012-09-29 02:34:11.898184
1313 1368,1,default,86,qbtest,"",push_local:73eb33fa1edfc909f673d128bac55bd175aa7559,2012-09-29 02:34:11.898184
1314 1369,3,demo,68,aaa-project,"",push_local:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-09-29 15:24:51.088586
1314 1369,3,demo,68,aaa-project,"",push_local:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-09-29 15:24:51.088586
1315 1370,1,default,86,qbtest,"",push_local:f8647a38fa4e07d3a2dc96add8944581b31ebec5,2012-09-29 15:57:39.603006
1315 1370,1,default,86,qbtest,"",push_local:f8647a38fa4e07d3a2dc96add8944581b31ebec5,2012-09-29 15:57:39.603006
1316 1371,1,default,159,group/Test-for-code-review,"",push_local:b5c5b6f1112b43442d09a889212e132a93f5793d,2012-09-29 22:12:56.345343
1316 1371,1,default,159,group/Test-for-code-review,"",push_local:b5c5b6f1112b43442d09a889212e132a93f5793d,2012-09-29 22:12:56.345343
1317 1372,1,default,86,qbtest,"",push_local:bd704836ab78a54cfeb4819a781ff6371fad01bc,2012-09-30 14:33:42.755143
1317 1372,1,default,86,qbtest,"",push_local:bd704836ab78a54cfeb4819a781ff6371fad01bc,2012-09-30 14:33:42.755143
1318 1373,244,dantascione,254,dantest,"",started_following_repo,2012-09-30 23:39:17.975735
1318 1373,244,dantascione,254,dantest,"",started_following_repo,2012-09-30 23:39:17.975735
1319 1374,244,dantascione,254,dantest,"",user_created_repo,2012-09-30 23:39:17.98529
1319 1374,244,dantascione,254,dantest,"",user_created_repo,2012-09-30 23:39:17.98529
1320 1375,245,charlouze,255,Testtest,"",started_following_repo,2012-10-01 11:19:43.687453
1320 1375,245,charlouze,255,Testtest,"",started_following_repo,2012-10-01 11:19:43.687453
1321 1376,245,charlouze,255,Testtest,"",user_created_repo,2012-10-01 11:19:43.696384
1321 1376,245,charlouze,255,Testtest,"",user_created_repo,2012-10-01 11:19:43.696384
1322 1377,245,charlouze,255,Testtest,"",push_local:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:20:31.326931
1322 1377,245,charlouze,255,Testtest,"",push_local:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:20:31.326931
1323 1378,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:23:58.997838
1323 1378,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:23:58.997838
1324 1379,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:24:31.208917
1324 1379,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:24:31.208917
1325 1380,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:26:15.205171
1325 1380,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:26:15.205171
1326 1381,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:28:48.152422
1326 1381,245,charlouze,255,Testtest,"",user_commented_revision:ac7c39aa78a1d0c799881d699d8565b0816cc178,2012-10-01 11:28:48.152422
1327 1382,5,natosha.bard,256,unity-test-trunk,"",started_following_repo,2012-10-01 12:54:48.012856
1327 1382,5,natosha.bard,256,unity-test-trunk,"",started_following_repo,2012-10-01 12:54:48.012856
1328 1383,5,natosha.bard,256,unity-test-trunk,"",user_created_repo,2012-10-01 12:54:48.021667
1328 1383,5,natosha.bard,256,unity-test-trunk,"",user_created_repo,2012-10-01 12:54:48.021667
1329 1384,5,natosha.bard,256,unity-test-trunk,62.116.219.97,push:5dfe4faa4f9adf73694cf8bb5d35ef0accc5d8b5,2012-10-01 12:57:11.503947
1329 1384,5,natosha.bard,256,unity-test-trunk,62.116.219.97,push:5dfe4faa4f9adf73694cf8bb5d35ef0accc5d8b5,2012-10-01 12:57:11.503947
1330 1385,5,natosha.bard,257,fork-unity-test-trunk,"",started_following_repo,2012-10-01 12:57:33.430298
1330 1385,5,natosha.bard,257,fork-unity-test-trunk,"",started_following_repo,2012-10-01 12:57:33.430298
1331 1386,5,natosha.bard,256,unity-test-trunk,"",user_forked_repo:fork-unity-test-trunk,2012-10-01 12:57:33.441529
1331 1386,5,natosha.bard,256,unity-test-trunk,"",user_forked_repo:fork-unity-test-trunk,2012-10-01 12:57:33.441529
1332 1387,5,natosha.bard,257,fork-unity-test-trunk,"",user_created_fork:fork-unity-test-trunk,2012-10-01 12:57:33.448865
1332 1387,5,natosha.bard,257,fork-unity-test-trunk,"",user_created_fork:fork-unity-test-trunk,2012-10-01 12:57:33.448865
1333 1388,5,natosha.bard,256,unity-test-trunk,"",user_commented_revision:5dfe4faa4f9adf73694cf8bb5d35ef0accc5d8b5,2012-10-01 12:58:09.430931
1333 1388,5,natosha.bard,256,unity-test-trunk,"",user_commented_revision:5dfe4faa4f9adf73694cf8bb5d35ef0accc5d8b5,2012-10-01 12:58:09.430931
1334 1389,5,natosha.bard,258,fork-unity-test-trunk2,"",started_following_repo,2012-10-01 12:58:19.082884
1334 1389,5,natosha.bard,258,fork-unity-test-trunk2,"",started_following_repo,2012-10-01 12:58:19.082884
1335 1390,5,natosha.bard,256,unity-test-trunk,"",user_forked_repo:fork-unity-test-trunk2,2012-10-01 12:58:19.095714
1335 1390,5,natosha.bard,256,unity-test-trunk,"",user_forked_repo:fork-unity-test-trunk2,2012-10-01 12:58:19.095714
1336 1391,5,natosha.bard,258,fork-unity-test-trunk2,"",user_created_fork:fork-unity-test-trunk2,2012-10-01 12:58:19.103935
1336 1391,5,natosha.bard,258,fork-unity-test-trunk2,"",user_created_fork:fork-unity-test-trunk2,2012-10-01 12:58:19.103935
1337 1392,5,natosha.bard,257,fork-unity-test-trunk,62.116.219.97,push:591581862d50c7439243a7ef92d7638a5c88e6be,2012-10-01 12:59:48.814795
1337 1392,5,natosha.bard,257,fork-unity-test-trunk,62.116.219.97,push:591581862d50c7439243a7ef92d7638a5c88e6be,2012-10-01 12:59:48.814795
1338 1393,5,natosha.bard,257,fork-unity-test-trunk,"",user_commented_revision:591581862d50c7439243a7ef92d7638a5c88e6be,2012-10-01 13:00:18.872593
1338 1393,5,natosha.bard,257,fork-unity-test-trunk,"",user_commented_revision:591581862d50c7439243a7ef92d7638a5c88e6be,2012-10-01 13:00:18.872593
1339 1394,5,natosha.bard,259,fork-fork-unity-test-trunk,"",started_following_repo,2012-10-01 13:00:29.763296
1339 1394,5,natosha.bard,259,fork-fork-unity-test-trunk,"",started_following_repo,2012-10-01 13:00:29.763296
1340 1395,5,natosha.bard,257,fork-unity-test-trunk,"",user_forked_repo:fork-fork-unity-test-trunk,2012-10-01 13:00:29.774818
1340 1395,5,natosha.bard,257,fork-unity-test-trunk,"",user_forked_repo:fork-fork-unity-test-trunk,2012-10-01 13:00:29.774818
1341 1396,5,natosha.bard,259,fork-fork-unity-test-trunk,"",user_created_fork:fork-fork-unity-test-trunk,2012-10-01 13:00:29.782337
1341 1396,5,natosha.bard,259,fork-fork-unity-test-trunk,"",user_created_fork:fork-fork-unity-test-trunk,2012-10-01 13:00:29.782337
1342 1397,1,default,259,fork-fork-unity-test-trunk,62.116.219.97,pull,2012-10-01 13:00:44.100787
1342 1397,1,default,259,fork-fork-unity-test-trunk,62.116.219.97,pull,2012-10-01 13:00:44.100787
1343 1398,5,natosha.bard,259,fork-fork-unity-test-trunk,62.116.219.97,push:2d2486009a875d8d98667aef38451560fe93e763,2012-10-01 13:01:55.725508
1343 1398,5,natosha.bard,259,fork-fork-unity-test-trunk,62.116.219.97,push:2d2486009a875d8d98667aef38451560fe93e763,2012-10-01 13:01:55.725508
1344 1399,5,natosha.bard,260,fork-code-review-test2,"",started_following_repo,2012-10-01 14:08:47.077755
1344 1399,5,natosha.bard,260,fork-code-review-test2,"",started_following_repo,2012-10-01 14:08:47.077755
1345 1400,5,natosha.bard,38,code-review-test,"",user_forked_repo:fork-code-review-test2,2012-10-01 14:08:47.376389
1345 1400,5,natosha.bard,38,code-review-test,"",user_forked_repo:fork-code-review-test2,2012-10-01 14:08:47.376389
1346 1401,5,natosha.bard,260,fork-code-review-test2,"",user_created_fork:fork-code-review-test2,2012-10-01 14:08:47.383934
1346 1401,5,natosha.bard,260,fork-code-review-test2,"",user_created_fork:fork-code-review-test2,2012-10-01 14:08:47.383934
1347 1402,1,default,260,fork-code-review-test2,62.116.219.97,pull,2012-10-01 14:09:42.365103
1347 1402,1,default,260,fork-code-review-test2,62.116.219.97,pull,2012-10-01 14:09:42.365103
1348 1405,3,demo,261,subrepotest,"",started_following_repo,2012-10-02 10:44:47.066589
1348 1405,3,demo,261,subrepotest,"",started_following_repo,2012-10-02 10:44:47.066589
1349 1406,3,demo,261,subrepotest,"",user_created_repo,2012-10-02 10:44:47.075524
1349 1406,3,demo,261,subrepotest,"",user_created_repo,2012-10-02 10:44:47.075524
1350 1407,3,demo,262,subrepotest-subrepo,"",started_following_repo,2012-10-02 10:45:45.448349
1350 1407,3,demo,262,subrepotest-subrepo,"",started_following_repo,2012-10-02 10:45:45.448349
1351 1408,3,demo,262,subrepotest-subrepo,"",user_created_repo,2012-10-02 10:45:45.457209
1351 1408,3,demo,262,subrepotest-subrepo,"",user_created_repo,2012-10-02 10:45:45.457209
1352 1409,1,default,68,aaa-project,64.208.49.214,pull,2012-10-02 10:58:33.566475
1352 1409,1,default,68,aaa-project,64.208.49.214,pull,2012-10-02 10:58:33.566475
1353 1410,3,demo,68,aaa-project,64.208.49.214,push:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-10-02 10:59:53.3117
1353 1410,3,demo,68,aaa-project,64.208.49.214,push:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-10-02 10:59:53.3117
1354 1411,3,demo,263,ronka,"",started_following_repo,2012-10-02 20:07:51.923475
1354 1411,3,demo,263,ronka,"",started_following_repo,2012-10-02 20:07:51.923475
1355 1412,3,demo,263,ronka,"",user_created_repo,2012-10-02 20:07:51.935377
1355 1412,3,demo,263,ronka,"",user_created_repo,2012-10-02 20:07:51.935377
1356 1413,3,demo,263,ronka,"",push_local:1f91226c774447604a289d0bed9e05f83432fcbe,2012-10-02 20:08:15.849135
1356 1413,3,demo,263,ronka,"",push_local:1f91226c774447604a289d0bed9e05f83432fcbe,2012-10-02 20:08:15.849135
1357 1414,3,demo,264,fork-ronka,"",started_following_repo,2012-10-02 20:10:09.612131
1357 1414,3,demo,264,fork-ronka,"",started_following_repo,2012-10-02 20:10:09.612131
1358 1415,3,demo,263,ronka,"",user_forked_repo:fork-ronka,2012-10-02 20:10:09.633433
1358 1415,3,demo,263,ronka,"",user_forked_repo:fork-ronka,2012-10-02 20:10:09.633433
1359 1416,3,demo,264,fork-ronka,"",user_created_fork:fork-ronka,2012-10-02 20:10:09.647288
1359 1416,3,demo,264,fork-ronka,"",user_created_fork:fork-ronka,2012-10-02 20:10:09.647288
1360 1417,3,demo,264,fork-ronka,"",push_local:4459658481bad662eb53b308fcf2c0f08fc03d9d,2012-10-02 20:11:23.190731
1360 1417,3,demo,264,fork-ronka,"",push_local:4459658481bad662eb53b308fcf2c0f08fc03d9d,2012-10-02 20:11:23.190731
1361 1418,3,demo,263,ronka,"",user_commented_pull_request:64,2012-10-02 20:12:47.073638
1361 1418,3,demo,263,ronka,"",user_commented_pull_request:64,2012-10-02 20:12:47.073638
1362 1419,3,demo,263,ronka,"",user_closed_pull_request:64,2012-10-02 20:12:47.080999
1362 1419,3,demo,263,ronka,"",user_closed_pull_request:64,2012-10-02 20:12:47.080999
1363 1420,3,demo,263,ronka,"",user_commented_revision:1f91226c774447604a289d0bed9e05f83432fcbe,2012-10-02 20:17:57.594034
1363 1420,3,demo,263,ronka,"",user_commented_revision:1f91226c774447604a289d0bed9e05f83432fcbe,2012-10-02 20:17:57.594034
1364 1421,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-10-03 08:51:36.810037
1364 1421,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-10-03 08:51:36.810037
1365 1422,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-10-03 08:52:06.456456
1365 1422,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-10-03 08:52:06.456456
1366 1423,3,demo,127,my-super-rep,"",push_local:a43642a9b5a96ede38c20f64fc58827a8f20e276,2012-10-03 17:18:49.819491
1366 1423,3,demo,127,my-super-rep,"",push_local:a43642a9b5a96ede38c20f64fc58827a8f20e276,2012-10-03 17:18:49.819491
1367 1424,5,natosha.bard,265,mercurial-trunk,"",started_following_repo,2012-10-04 11:41:46.868234
1367 1424,5,natosha.bard,265,mercurial-trunk,"",started_following_repo,2012-10-04 11:41:46.868234
1368 1425,5,natosha.bard,265,mercurial-trunk,"",user_created_repo,2012-10-04 11:41:46.878607
1368 1425,5,natosha.bard,265,mercurial-trunk,"",user_created_repo,2012-10-04 11:41:46.878607
1369 1427,5,natosha.bard,266,fork-mercurial-trunk,"",started_following_repo,2012-10-04 11:44:29.692682
1369 1427,5,natosha.bard,266,fork-mercurial-trunk,"",started_following_repo,2012-10-04 11:44:29.692682
1370 1428,5,natosha.bard,265,mercurial-trunk,"",user_forked_repo:fork-mercurial-trunk,2012-10-04 11:44:29.748996
1370 1428,5,natosha.bard,265,mercurial-trunk,"",user_forked_repo:fork-mercurial-trunk,2012-10-04 11:44:29.748996
1371 1429,5,natosha.bard,266,fork-mercurial-trunk,"",user_created_fork:fork-mercurial-trunk,2012-10-04 11:44:29.756625
1371 1429,5,natosha.bard,266,fork-mercurial-trunk,"",user_created_fork:fork-mercurial-trunk,2012-10-04 11:44:29.756625
1372 1431,246,stilvoid,267,fork-florian-test,"",started_following_repo,2012-10-04 11:54:18.90186
1372 1431,246,stilvoid,267,fork-florian-test,"",started_following_repo,2012-10-04 11:54:18.90186
1373 1432,246,stilvoid,222,florian-test,"",user_forked_repo:fork-florian-test,2012-10-04 11:54:18.931691
1373 1432,246,stilvoid,222,florian-test,"",user_forked_repo:fork-florian-test,2012-10-04 11:54:18.931691
1374 1433,246,stilvoid,267,fork-florian-test,"",user_created_fork:fork-florian-test,2012-10-04 11:54:18.939443
1374 1433,246,stilvoid,267,fork-florian-test,"",user_created_fork:fork-florian-test,2012-10-04 11:54:18.939443
1375 1434,5,natosha.bard,266,fork-mercurial-trunk,62.116.219.97,push:f11d82b04ca50abb59ad6cfbb16fbd5022f45395,2012-10-04 12:54:36.544979
1375 1434,5,natosha.bard,266,fork-mercurial-trunk,62.116.219.97,push:f11d82b04ca50abb59ad6cfbb16fbd5022f45395,2012-10-04 12:54:36.544979
1376 1435,3,demo,268,foofootest,"",started_following_repo,2012-10-04 16:59:07.216586
1376 1435,3,demo,268,foofootest,"",started_following_repo,2012-10-04 16:59:07.216586
1377 1436,3,demo,268,foofootest,"",user_created_repo,2012-10-04 16:59:07.226019
1377 1436,3,demo,268,foofootest,"",user_created_repo,2012-10-04 16:59:07.226019
1378 1437,3,demo,268,foofootest,"unknown, 217.91.236.41",push:4bc0645c20363db85c9a5050a85c2c05a1991765,2012-10-04 16:59:59.645044
1378 1437,3,demo,268,foofootest,"unknown, 217.91.236.41",push:4bc0645c20363db85c9a5050a85c2c05a1991765,2012-10-04 16:59:59.645044
1379 1438,3,demo,269,fork-foofootest,"",started_following_repo,2012-10-04 17:00:11.539125
1379 1438,3,demo,269,fork-foofootest,"",started_following_repo,2012-10-04 17:00:11.539125
1380 1439,3,demo,268,foofootest,"",user_forked_repo:fork-foofootest,2012-10-04 17:00:11.631359
1380 1439,3,demo,268,foofootest,"",user_forked_repo:fork-foofootest,2012-10-04 17:00:11.631359
1381 1440,3,demo,269,fork-foofootest,"",user_created_fork:fork-foofootest,2012-10-04 17:00:11.639325
1381 1440,3,demo,269,fork-foofootest,"",user_created_fork:fork-foofootest,2012-10-04 17:00:11.639325
1382 1442,3,demo,270,fork-fork-code-review-test2-fork,"",started_following_repo,2012-10-04 20:42:33.068317
1382 1442,3,demo,270,fork-fork-code-review-test2-fork,"",started_following_repo,2012-10-04 20:42:33.068317
1383 1443,3,demo,260,fork-code-review-test2,"",user_forked_repo:fork-fork-code-review-test2-fork,2012-10-04 20:42:33.16905
1383 1443,3,demo,260,fork-code-review-test2,"",user_forked_repo:fork-fork-code-review-test2-fork,2012-10-04 20:42:33.16905
1384 1444,3,demo,270,fork-fork-code-review-test2-fork,"",user_created_fork:fork-fork-code-review-test2-fork,2012-10-04 20:42:33.176787
1384 1444,3,demo,270,fork-fork-code-review-test2-fork,"",user_created_fork:fork-fork-code-review-test2-fork,2012-10-04 20:42:33.176787
1385 1445,1,default,68,aaa-project,77.120.252.31,pull,2012-10-05 13:46:02.97144
1385 1445,1,default,68,aaa-project,77.120.252.31,pull,2012-10-05 13:46:02.97144
1386 1446,3,demo,271,ttt,"",started_following_repo,2012-10-05 14:18:30.594537
1386 1446,3,demo,271,ttt,"",started_following_repo,2012-10-05 14:18:30.594537
1387 1447,3,demo,271,ttt,"",user_created_repo,2012-10-05 14:18:30.637003
1387 1447,3,demo,271,ttt,"",user_created_repo,2012-10-05 14:18:30.637003
1388 1448,3,demo,272,tttt,"",started_following_repo,2012-10-05 14:19:42.35258
1388 1448,3,demo,272,tttt,"",started_following_repo,2012-10-05 14:19:42.35258
1389 1449,3,demo,272,tttt,"",user_created_repo,2012-10-05 14:19:42.364131
1389 1449,3,demo,272,tttt,"",user_created_repo,2012-10-05 14:19:42.364131
1390 1450,3,demo,273,dotemacs,"",started_following_repo,2012-10-06 06:10:59.614385
1390 1450,3,demo,273,dotemacs,"",started_following_repo,2012-10-06 06:10:59.614385
1391 1451,3,demo,273,dotemacs,"",user_created_repo,2012-10-06 06:10:59.624083
1391 1451,3,demo,273,dotemacs,"",user_created_repo,2012-10-06 06:10:59.624083
1392 1452,3,demo,273,dotemacs,202.120.38.18,push:9d237512de694be7b30e61b9e0373f0dc373fa24,2012-10-06 06:13:30.793795
1392 1452,3,demo,273,dotemacs,202.120.38.18,push:9d237512de694be7b30e61b9e0373f0dc373fa24,2012-10-06 06:13:30.793795
1393 1453,249,shahin,274,kado,"",started_following_repo,2012-10-07 13:13:08.693172
1393 1453,249,shahin,274,kado,"",started_following_repo,2012-10-07 13:13:08.693172
1394 1454,249,shahin,274,kado,"",user_created_repo,2012-10-07 13:13:08.703331
1394 1454,249,shahin,274,kado,"",user_created_repo,2012-10-07 13:13:08.703331
1395 1455,249,shahin,274,kado,"",push_local:cb452956879bd22220e2513d7417d239e216813d,2012-10-07 13:14:26.479362
1395 1455,249,shahin,274,kado,"",push_local:cb452956879bd22220e2513d7417d239e216813d,2012-10-07 13:14:26.479362
1396 1456,3,demo,275,TEST,"",started_following_repo,2012-10-07 22:32:01.007959
1396 1456,3,demo,275,TEST,"",started_following_repo,2012-10-07 22:32:01.007959
1397 1457,3,demo,275,TEST,"",user_created_repo,2012-10-07 22:32:01.017119
1397 1457,3,demo,275,TEST,"",user_created_repo,2012-10-07 22:32:01.017119
1398 1458,3,demo,276,my-wonderful-project,"",started_following_repo,2012-10-08 10:12:31.462976
1398 1458,3,demo,276,my-wonderful-project,"",started_following_repo,2012-10-08 10:12:31.462976
1399 1459,3,demo,276,my-wonderful-project,"",user_created_repo,2012-10-08 10:12:31.474657
1399 1459,3,demo,276,my-wonderful-project,"",user_created_repo,2012-10-08 10:12:31.474657
1400 1460,250,dessp,277,fork-fork-aaa-project,"",started_following_repo,2012-10-08 12:34:18.364871
1400 1460,250,dessp,277,fork-fork-aaa-project,"",started_following_repo,2012-10-08 12:34:18.364871
1401 1461,250,dessp,184,fork-aaa-project,"",user_forked_repo:fork-fork-aaa-project,2012-10-08 12:34:18.383393
1401 1461,250,dessp,184,fork-aaa-project,"",user_forked_repo:fork-fork-aaa-project,2012-10-08 12:34:18.383393
1402 1462,250,dessp,277,fork-fork-aaa-project,"",user_created_fork:fork-fork-aaa-project,2012-10-08 12:34:18.392037
1402 1462,250,dessp,277,fork-fork-aaa-project,"",user_created_fork:fork-fork-aaa-project,2012-10-08 12:34:18.392037
1403 1463,250,dessp,278,bla,"",started_following_repo,2012-10-08 12:35:59.034211
1403 1463,250,dessp,278,bla,"",started_following_repo,2012-10-08 12:35:59.034211
1404 1464,250,dessp,278,bla,"",user_created_repo,2012-10-08 12:35:59.046964
1404 1464,250,dessp,278,bla,"",user_created_repo,2012-10-08 12:35:59.046964
1405 1465,250,dessp,278,bla,"",push_local:d67d6b2cd83c926cc98b7338dd375c0d7dc224ed,2012-10-08 12:36:23.610968
1405 1465,250,dessp,278,bla,"",push_local:d67d6b2cd83c926cc98b7338dd375c0d7dc224ed,2012-10-08 12:36:23.610968
1406 1466,251,vaueff,279,meinsisses,"",started_following_repo,2012-10-08 17:11:28.309493
1406 1466,251,vaueff,279,meinsisses,"",started_following_repo,2012-10-08 17:11:28.309493
1407 1467,251,vaueff,206,test-sls,"",user_forked_repo:meinsisses,2012-10-08 17:11:28.333732
1407 1467,251,vaueff,206,test-sls,"",user_forked_repo:meinsisses,2012-10-08 17:11:28.333732
1408 1468,251,vaueff,279,meinsisses,"",user_created_fork:meinsisses,2012-10-08 17:11:28.34374
1408 1468,251,vaueff,279,meinsisses,"",user_created_fork:meinsisses,2012-10-08 17:11:28.34374
1409 1469,3,demo,280,HelloWorld,"",started_following_repo,2012-10-08 17:19:57.672859
1409 1469,3,demo,280,HelloWorld,"",started_following_repo,2012-10-08 17:19:57.672859
1410 1470,3,demo,280,HelloWorld,"",user_created_repo,2012-10-08 17:19:57.685128
1410 1470,3,demo,280,HelloWorld,"",user_created_repo,2012-10-08 17:19:57.685128
1411 1471,3,demo,127,my-super-rep,"",user_commented_pull_request:62,2012-10-08 17:37:04.554118
1411 1471,3,demo,127,my-super-rep,"",user_commented_pull_request:62,2012-10-08 17:37:04.554118
1412 1472,3,demo,127,my-super-rep,"",user_closed_pull_request:62,2012-10-08 17:37:04.56515
1412 1472,3,demo,127,my-super-rep,"",user_closed_pull_request:62,2012-10-08 17:37:04.56515
1413 1473,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-08 17:38:13.042926
1413 1473,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-08 17:38:13.042926
1414 1474,254,yujiro,281,yujirotest,"",started_following_repo,2012-10-09 06:59:18.412429
1414 1474,254,yujiro,281,yujirotest,"",started_following_repo,2012-10-09 06:59:18.412429
1415 1475,254,yujiro,281,yujirotest,"",user_created_repo,2012-10-09 06:59:18.424128
1415 1475,254,yujiro,281,yujirotest,"",user_created_repo,2012-10-09 06:59:18.424128
1416 1476,254,yujiro,282,fork-amabあああ,"",started_following_repo,2012-10-09 07:03:34.289292
1416 1476,254,yujiro,282,fork-amabあああ,"",started_following_repo,2012-10-09 07:03:34.289292
1417 1477,254,yujiro,122,amab,"",user_forked_repo:fork-amabあああ,2012-10-09 07:03:34.308792
1417 1477,254,yujiro,122,amab,"",user_forked_repo:fork-amabあああ,2012-10-09 07:03:34.308792
1418 1478,254,yujiro,282,fork-amabあああ,"",user_created_fork:fork-amabあああ,2012-10-09 07:03:34.320104
1418 1478,254,yujiro,282,fork-amabあああ,"",user_created_fork:fork-amabあああ,2012-10-09 07:03:34.320104
1419 1479,254,yujiro,172,go,"",started_following_repo,2012-10-09 07:09:23.727527
1419 1479,254,yujiro,172,go,"",started_following_repo,2012-10-09 07:09:23.727527
1420 1480,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-09 08:44:14.777602
1420 1480,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-09 08:44:14.777602
1421 1481,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-09 08:44:52.916854
1421 1481,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-09 08:44:52.916854
1422 1482,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:16.42599
1422 1482,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:16.42599
1423 1483,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:38.745859
1423 1483,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:38.745859
1424 1484,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:52.328248
1424 1484,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:45:52.328248
1425 1485,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:46:01.737145
1425 1485,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:30853f4bde2f2b6f0a7126392b9b1b4c5ea37e0a,2012-10-09 08:46:01.737145
1426 1486,255,che,283,test-zh-tw,"",started_following_repo,2012-10-09 10:33:51.971598
1426 1486,255,che,283,test-zh-tw,"",started_following_repo,2012-10-09 10:33:51.971598
1427 1487,255,che,283,test-zh-tw,"",user_created_repo,2012-10-09 10:33:51.983333
1427 1487,255,che,283,test-zh-tw,"",user_created_repo,2012-10-09 10:33:51.983333
1428 1488,255,che,283,test-zh-tw,"61.56.13.120, 61.56.15.166","push:ea3aa785b5f361e36ccdbb8201fa809cf0e9b371,bf62637068b19308263d2ed9cdd1b43ae3d88757",2012-10-09 10:36:13.255622
1428 1488,255,che,283,test-zh-tw,"61.56.13.120, 61.56.15.166","push:ea3aa785b5f361e36ccdbb8201fa809cf0e9b371,bf62637068b19308263d2ed9cdd1b43ae3d88757",2012-10-09 10:36:13.255622
1429 1489,3,demo,284,fork-django,"",started_following_repo,2012-10-09 20:17:50.071294
1429 1489,3,demo,284,fork-django,"",started_following_repo,2012-10-09 20:17:50.071294
1430 1490,3,demo,110,django,"",user_forked_repo:fork-django,2012-10-09 20:17:57.420156
1430 1490,3,demo,110,django,"",user_forked_repo:fork-django,2012-10-09 20:17:57.420156
1431 1491,3,demo,284,fork-django,"",user_created_fork:fork-django,2012-10-09 20:17:57.434345
1431 1491,3,demo,284,fork-django,"",user_created_fork:fork-django,2012-10-09 20:17:57.434345
1432 1492,3,demo,285,github-killer,"",started_following_repo,2012-10-09 21:05:48.6309
1432 1492,3,demo,285,github-killer,"",started_following_repo,2012-10-09 21:05:48.6309
1433 1493,3,demo,285,github-killer,"",user_created_repo,2012-10-09 21:05:48.644556
1433 1493,3,demo,285,github-killer,"",user_created_repo,2012-10-09 21:05:48.644556
1434 1494,3,demo,285,github-killer,188.25.172.123,push:df73f912eb7cd583d1fda6a4ef19c1ab1dbc6f92,2012-10-09 21:06:55.345622
1434 1494,3,demo,285,github-killer,188.25.172.123,push:df73f912eb7cd583d1fda6a4ef19c1ab1dbc6f92,2012-10-09 21:06:55.345622
1435 1495,3,demo,285,aloha,"",user_updated_repo,2012-10-09 21:13:16.792012
1435 1495,3,demo,285,aloha,"",user_updated_repo,2012-10-09 21:13:16.792012
1436 1496,3,demo,127,my-super-rep,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-10-09 22:39:42.201647
1436 1496,3,demo,127,my-super-rep,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-10-09 22:39:42.201647
1437 1497,3,demo,286,http-mercurial.selenic.com-hg,"",started_following_repo,2012-10-10 02:37:22.675764
1437 1497,3,demo,286,http-mercurial.selenic.com-hg,"",started_following_repo,2012-10-10 02:37:22.675764
1438 1498,3,demo,286,http-mercurial.selenic.com-hg,"",user_created_repo,2012-10-10 02:37:22.693066
1438 1498,3,demo,286,http-mercurial.selenic.com-hg,"",user_created_repo,2012-10-10 02:37:22.693066
1439 1499,3,demo,287,fork-http-mercurial.selenic.com-hg,"",started_following_repo,2012-10-10 02:38:04.918464
1439 1499,3,demo,287,fork-http-mercurial.selenic.com-hg,"",started_following_repo,2012-10-10 02:38:04.918464
1440 1500,3,demo,286,http-mercurial.selenic.com-hg,"",user_forked_repo:fork-http-mercurial.selenic.com-hg,2012-10-10 02:38:05.085956
1440 1500,3,demo,286,http-mercurial.selenic.com-hg,"",user_forked_repo:fork-http-mercurial.selenic.com-hg,2012-10-10 02:38:05.085956
1441 1501,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_created_fork:fork-http-mercurial.selenic.com-hg,2012-10-10 02:38:05.094152
1441 1501,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_created_fork:fork-http-mercurial.selenic.com-hg,2012-10-10 02:38:05.094152
1442 1502,3,demo,287,fork-http-mercurial.selenic.com-hg,"",push_local:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:39:19.103663
1442 1502,3,demo,287,fork-http-mercurial.selenic.com-hg,"",push_local:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:39:19.103663
1443 1503,3,demo,286,http-mercurial.selenic.com-hg,"",user_commented_pull_request:66,2012-10-10 02:42:42.025549
1443 1503,3,demo,286,http-mercurial.selenic.com-hg,"",user_commented_pull_request:66,2012-10-10 02:42:42.025549
1444 1504,3,demo,286,http-mercurial.selenic.com-hg,"",user_closed_pull_request:66,2012-10-10 02:42:42.034609
1444 1504,3,demo,286,http-mercurial.selenic.com-hg,"",user_closed_pull_request:66,2012-10-10 02:42:42.034609
1445 1505,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_commented_revision:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:44:45.999905
1445 1505,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_commented_revision:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:44:45.999905
1446 1506,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_commented_revision:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:44:51.716813
1446 1506,3,demo,287,fork-http-mercurial.selenic.com-hg,"",user_commented_revision:9ce0ab91b57ea15f5e8569ef7304ce58c9acf477,2012-10-10 02:44:51.716813
1447 1507,256,dg_test,288,dgtestrepo,"",started_following_repo,2012-10-10 04:48:48.801476
1447 1507,256,dg_test,288,dgtestrepo,"",started_following_repo,2012-10-10 04:48:48.801476
1448 1508,256,dg_test,288,dgtestrepo,"",user_created_repo,2012-10-10 04:48:48.813822
1448 1508,256,dg_test,288,dgtestrepo,"",user_created_repo,2012-10-10 04:48:48.813822
1449 1509,256,dg_test,288,dgtestrepo,59.167.167.230,push:27ab7e76abe80344db6a250d3a8979117907704a,2012-10-10 04:49:46.01297
1449 1509,256,dg_test,288,dgtestrepo,59.167.167.230,push:27ab7e76abe80344db6a250d3a8979117907704a,2012-10-10 04:49:46.01297
1450 1510,256,dg_test,289,fork-dgtestrepo,"",started_following_repo,2012-10-10 04:50:15.108071
1450 1510,256,dg_test,289,fork-dgtestrepo,"",started_following_repo,2012-10-10 04:50:15.108071
1451 1511,256,dg_test,288,dgtestrepo,"",user_forked_repo:fork-dgtestrepo,2012-10-10 04:50:15.127777
1451 1511,256,dg_test,288,dgtestrepo,"",user_forked_repo:fork-dgtestrepo,2012-10-10 04:50:15.127777
1452 1512,256,dg_test,289,fork-dgtestrepo,"",user_created_fork:fork-dgtestrepo,2012-10-10 04:50:15.141651
1452 1512,256,dg_test,289,fork-dgtestrepo,"",user_created_fork:fork-dgtestrepo,2012-10-10 04:50:15.141651
1453 1513,1,default,289,fork-dgtestrepo,59.167.167.230,pull,2012-10-10 04:50:29.22472
1453 1513,1,default,289,fork-dgtestrepo,59.167.167.230,pull,2012-10-10 04:50:29.22472
1454 1514,256,dg_test,289,fork-dgtestrepo,59.167.167.230,push:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 04:50:59.757989
1454 1514,256,dg_test,289,fork-dgtestrepo,59.167.167.230,push:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 04:50:59.757989
1455 1515,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:51:51.635244
1455 1515,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:51:51.635244
1456 1516,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:52:13.711421
1456 1516,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:52:13.711421
1457 1517,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:54:11.518751
1457 1517,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 04:54:11.518751
1458 1518,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 06:35:30.952227
1458 1518,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 06:35:30.952227
1459 1519,1,default,289,fork-dgtestrepo,59.167.167.230,pull,2012-10-10 12:39:46.774029
1459 1519,1,default,289,fork-dgtestrepo,59.167.167.230,pull,2012-10-10 12:39:46.774029
1460 1520,256,dg_test,288,dgtestrepo,59.167.167.230,push:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 12:40:26.181044
1460 1520,256,dg_test,288,dgtestrepo,59.167.167.230,push:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 12:40:26.181044
1461 1521,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:41:54.987689
1461 1521,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:41:54.987689
1462 1522,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:42:03.057669
1462 1522,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:42:03.057669
1463 1523,256,dg_test,257,fork-unity-test-trunk,"",user_commented_pull_request:63,2012-10-10 12:47:14.298864
1463 1523,256,dg_test,257,fork-unity-test-trunk,"",user_commented_pull_request:63,2012-10-10 12:47:14.298864
1464 1524,256,dg_test,288,dgtestrepo,"",user_commented_revision:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 12:49:30.180636
1464 1524,256,dg_test,288,dgtestrepo,"",user_commented_revision:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 12:49:30.180636
1465 1525,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:50:11.880937
1465 1525,256,dg_test,288,dgtestrepo,"",user_commented_pull_request:67,2012-10-10 12:50:11.880937
1466 1526,256,dg_test,288,dgtestrepo,"",user_closed_pull_request:67,2012-10-10 12:50:11.885641
1466 1526,256,dg_test,288,dgtestrepo,"",user_closed_pull_request:67,2012-10-10 12:50:11.885641
1467 1527,256,dg_test,290,dg1,"",started_following_repo,2012-10-10 13:00:18.072553
1467 1527,256,dg_test,290,dg1,"",started_following_repo,2012-10-10 13:00:18.072553
1468 1528,256,dg_test,290,dg1,"",user_created_repo,2012-10-10 13:00:18.084695
1468 1528,256,dg_test,290,dg1,"",user_created_repo,2012-10-10 13:00:18.084695
1469 1529,256,dg_test,291,fork-dg1,"",started_following_repo,2012-10-10 13:00:31.045836
1469 1529,256,dg_test,291,fork-dg1,"",started_following_repo,2012-10-10 13:00:31.045836
1470 1530,256,dg_test,290,dg1,"",user_forked_repo:fork-dg1,2012-10-10 13:00:31.064079
1470 1530,256,dg_test,290,dg1,"",user_forked_repo:fork-dg1,2012-10-10 13:00:31.064079
1471 1531,256,dg_test,291,fork-dg1,"",user_created_fork:fork-dg1,2012-10-10 13:00:31.073556
1471 1531,256,dg_test,291,fork-dg1,"",user_created_fork:fork-dg1,2012-10-10 13:00:31.073556
1472 1538,256,dg_test,290,dg1,"",user_commented_pull_request:68,2012-10-10 13:04:05.221925
1472 1538,256,dg_test,290,dg1,"",user_commented_pull_request:68,2012-10-10 13:04:05.221925
1473 1532,256,dg_test,290,dg1,59.167.167.230,push:c8996239abf9263cdee5b15234372e3a6e793e44,2012-10-10 13:01:40.777662
1473 1532,256,dg_test,290,dg1,59.167.167.230,push:c8996239abf9263cdee5b15234372e3a6e793e44,2012-10-10 13:01:40.777662
1474 1533,256,dg_test,292,fork-dg11,"",started_following_repo,2012-10-10 13:02:33.177064
1474 1533,256,dg_test,292,fork-dg11,"",started_following_repo,2012-10-10 13:02:33.177064
1475 1534,256,dg_test,290,dg1,"",user_forked_repo:fork-dg11,2012-10-10 13:02:33.193349
1475 1534,256,dg_test,290,dg1,"",user_forked_repo:fork-dg11,2012-10-10 13:02:33.193349
1476 1535,256,dg_test,292,fork-dg11,"",user_created_fork:fork-dg11,2012-10-10 13:02:33.207706
1476 1535,256,dg_test,292,fork-dg11,"",user_created_fork:fork-dg11,2012-10-10 13:02:33.207706
1477 1536,1,default,292,fork-dg11,59.167.167.230,pull,2012-10-10 13:02:44.944887
1477 1536,1,default,292,fork-dg11,59.167.167.230,pull,2012-10-10 13:02:44.944887
1478 1537,256,dg_test,292,fork-dg11,59.167.167.230,push:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:03:21.048735
1478 1537,256,dg_test,292,fork-dg11,59.167.167.230,push:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:03:21.048735
1479 1540,256,dg_test,290,dg1,59.167.167.230,push:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:04:47.505397
1479 1540,256,dg_test,290,dg1,59.167.167.230,push:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:04:47.505397
1480 1541,256,dg_test,290,dg1,"",user_commented_revision:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:09:03.381076
1480 1541,256,dg_test,290,dg1,"",user_commented_revision:667a6c5db8f25896ef1cadd1f5138898026f068e,2012-10-10 13:09:03.381076
1481 1539,256,dg_test,290,dg1,"",user_closed_pull_request:68,2012-10-10 13:04:05.229068
1481 1539,256,dg_test,290,dg1,"",user_closed_pull_request:68,2012-10-10 13:04:05.229068
1482 1542,256,dg_test,288,dgtestrepo,"",user_commented_revision:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 13:20:40.664276
1482 1542,256,dg_test,288,dgtestrepo,"",user_commented_revision:36da9693f7e90974c46bf83c9abdb4803fac13ff,2012-10-10 13:20:40.664276
1483 1543,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-10-10 21:33:13.589618
1483 1543,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-10-10 21:33:13.589618
1484 1544,1,default,122,amab,75.128.117.162,pull,2012-10-11 04:26:13.01088
1484 1544,1,default,122,amab,75.128.117.162,pull,2012-10-11 04:26:13.01088
1485 1545,3,demo,294,fork-aloha,"",started_following_repo,2012-10-11 10:49:27.293629
1485 1545,3,demo,294,fork-aloha,"",started_following_repo,2012-10-11 10:49:27.293629
1486 1546,3,demo,285,aloha,"",user_forked_repo:fork-aloha,2012-10-11 10:49:27.403491
1486 1546,3,demo,285,aloha,"",user_forked_repo:fork-aloha,2012-10-11 10:49:27.403491
1487 1547,3,demo,294,fork-aloha,"",user_created_fork:fork-aloha,2012-10-11 10:49:27.417952
1487 1547,3,demo,294,fork-aloha,"",user_created_fork:fork-aloha,2012-10-11 10:49:27.417952
1488 1548,2,admin,,"","",admin_created_user:user_rc_1,2012-10-11 12:16:48.505211
1488 1548,2,admin,,"","",admin_created_user:user_rc_1,2012-10-11 12:16:48.505211
1489 1549,2,admin,,"","",admin_created_user:user_rc_2,2012-10-11 12:17:03.054922
1489 1549,2,admin,,"","",admin_created_user:user_rc_2,2012-10-11 12:17:03.054922
1490 1550,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:17:37.00837
1490 1550,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:17:37.00837
1491 1551,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:17:46.881784
1491 1551,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:17:46.881784
1492 1552,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:23:44.417665
1492 1552,3,demo,34,a,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-10-11 12:23:44.417665
1493 1553,3,demo,122,amab,"",push_local:796c02c902e1098268c622e34e9526b7424c2f0a,2012-10-11 14:24:20.208902
1493 1553,3,demo,122,amab,"",push_local:796c02c902e1098268c622e34e9526b7424c2f0a,2012-10-11 14:24:20.208902
1494 1554,3,demo,295,test333,"",started_following_repo,2012-10-11 14:33:32.412381
1494 1554,3,demo,295,test333,"",started_following_repo,2012-10-11 14:33:32.412381
1495 1555,3,demo,295,test333,"",user_created_repo,2012-10-11 14:33:32.424562
1495 1555,3,demo,295,test333,"",user_created_repo,2012-10-11 14:33:32.424562
1496 1556,3,demo,285,aloha,"",push_local:b59aa4775f36a3f553d2d9b9296b9272106b920d,2012-10-11 14:34:31.082462
1496 1556,3,demo,285,aloha,"",push_local:b59aa4775f36a3f553d2d9b9296b9272106b920d,2012-10-11 14:34:31.082462
1497 1557,3,demo,295,test333,62.153.70.3,"push:ee67bac620f0c1823f863be9e829efd5e3b34f42,a3c1ca826d1cc57132141e70ee7e9f77ecef43fe",2012-10-11 14:36:48.814768
1497 1557,3,demo,295,test333,62.153.70.3,"push:ee67bac620f0c1823f863be9e829efd5e3b34f42,a3c1ca826d1cc57132141e70ee7e9f77ecef43fe",2012-10-11 14:36:48.814768
1498 1558,3,demo,285,aloha,"",push_local:3266a55348986338e8cffb2b8605ba754a54497f,2012-10-11 14:37:57.513628
1498 1558,3,demo,285,aloha,"",push_local:3266a55348986338e8cffb2b8605ba754a54497f,2012-10-11 14:37:57.513628
1499 1559,3,demo,285,aloha,"",push_local:8411bc8656efd477e0c817ebbbf448fe5ca0d5fa,2012-10-11 14:38:33.492779
1499 1559,3,demo,285,aloha,"",push_local:8411bc8656efd477e0c817ebbbf448fe5ca0d5fa,2012-10-11 14:38:33.492779
1500 1560,3,demo,285,aloha,"",user_updated_repo,2012-10-11 14:43:08.034646
1500 1560,3,demo,285,aloha,"",user_updated_repo,2012-10-11 14:43:08.034646
1501 1561,3,demo,285,aloha,"",user_updated_repo,2012-10-11 14:43:52.370534
1501 1561,3,demo,285,aloha,"",user_updated_repo,2012-10-11 14:43:52.370534
1502 1562,260,kudtest,296,fork-amab-kud,"",started_following_repo,2012-10-11 15:02:21.701772
1502 1562,260,kudtest,296,fork-amab-kud,"",started_following_repo,2012-10-11 15:02:21.701772
1503 1563,260,kudtest,122,amab,"",user_forked_repo:fork-amab-kud,2012-10-11 15:02:21.721067
1503 1563,260,kudtest,122,amab,"",user_forked_repo:fork-amab-kud,2012-10-11 15:02:21.721067
1504 1564,260,kudtest,296,fork-amab-kud,"",user_created_fork:fork-amab-kud,2012-10-11 15:02:21.738079
1504 1564,260,kudtest,296,fork-amab-kud,"",user_created_fork:fork-amab-kud,2012-10-11 15:02:21.738079
1505 1565,3,demo,297,mytest,"",started_following_repo,2012-10-11 17:35:37.595048
1505 1565,3,demo,297,mytest,"",started_following_repo,2012-10-11 17:35:37.595048
1506 1566,3,demo,297,mytest,"",user_created_repo,2012-10-11 17:35:37.607661
1506 1566,3,demo,297,mytest,"",user_created_repo,2012-10-11 17:35:37.607661
1507 1567,3,demo,297,mytest,"",push_local:e9c241d5215f8bdfa8b0cabab229952b2740ee98,2012-10-11 17:37:50.954858
1507 1567,3,demo,297,mytest,"",push_local:e9c241d5215f8bdfa8b0cabab229952b2740ee98,2012-10-11 17:37:50.954858
1508 1568,3,demo,297,mytest,"",user_updated_repo,2012-10-11 17:39:13.548988
1508 1568,3,demo,297,mytest,"",user_updated_repo,2012-10-11 17:39:13.548988
1509 1569,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:10:15.328087
1509 1569,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:10:15.328087
1510 1570,37,tester,201,tord,"",user_commented_revision:35b3ebc8e1c23902eb97031f42f666df0835c5be,2012-10-11 19:19:55.616125
1510 1570,37,tester,201,tord,"",user_commented_revision:35b3ebc8e1c23902eb97031f42f666df0835c5be,2012-10-11 19:19:55.616125
1511 1571,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:24:45.086999
1511 1571,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:24:45.086999
1512 1572,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:25:23.183406
1512 1572,37,tester,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-10-11 19:25:23.183406
1513 1573,3,demo,43,bar,78.62.141.189,"push:cda1756acf28cae40e103db3792e4ac92c68d65a,3eab1e3601763da599d27541408fca1e12a09b02",2012-10-11 21:35:28.229244
1513 1573,3,demo,43,bar,78.62.141.189,"push:cda1756acf28cae40e103db3792e4ac92c68d65a,3eab1e3601763da599d27541408fca1e12a09b02",2012-10-11 21:35:28.229244
1514 1574,3,demo,298,a-foo,"",started_following_repo,2012-10-12 15:29:23.1832
1514 1574,3,demo,298,a-foo,"",started_following_repo,2012-10-12 15:29:23.1832
1515 1575,3,demo,298,a-foo,"",user_created_repo,2012-10-12 15:29:23.195979
1515 1575,3,demo,298,a-foo,"",user_created_repo,2012-10-12 15:29:23.195979
1516 1576,3,demo,298,a-foo,"",stopped_following_repo,2012-10-12 15:30:16.975594
1516 1576,3,demo,298,a-foo,"",stopped_following_repo,2012-10-12 15:30:16.975594
1517 1577,3,demo,298,a-foo,"",started_following_repo,2012-10-12 15:30:19.49313
1517 1577,3,demo,298,a-foo,"",started_following_repo,2012-10-12 15:30:19.49313
1518 1578,3,demo,285,aloha,"",user_commented_revision:8411bc8656efd477e0c817ebbbf448fe5ca0d5fa,2012-10-12 16:04:13.119321
1518 1578,3,demo,285,aloha,"",user_commented_revision:8411bc8656efd477e0c817ebbbf448fe5ca0d5fa,2012-10-12 16:04:13.119321
1519 1579,3,demo,299,test12345,"",started_following_repo,2012-10-13 02:45:09.148642
1519 1579,3,demo,299,test12345,"",started_following_repo,2012-10-13 02:45:09.148642
1520 1580,3,demo,299,test12345,"",user_created_repo,2012-10-13 02:45:09.15792
1520 1580,3,demo,299,test12345,"",user_created_repo,2012-10-13 02:45:09.15792
1521 1581,3,demo,300,TestTest,"",started_following_repo,2012-10-13 21:11:45.72971
1521 1581,3,demo,300,TestTest,"",started_following_repo,2012-10-13 21:11:45.72971
1522 1582,3,demo,300,TestTest,"",user_created_repo,2012-10-13 21:11:45.738999
1522 1582,3,demo,300,TestTest,"",user_created_repo,2012-10-13 21:11:45.738999
1523 1583,1,default,68,aaa-project,213.197.188.148,pull,2012-10-15 08:27:45.007378
1523 1583,1,default,68,aaa-project,213.197.188.148,pull,2012-10-15 08:27:45.007378
1524 1584,3,demo,301,fork-glib,"",started_following_repo,2012-10-16 08:31:44.802094
1524 1584,3,demo,301,fork-glib,"",started_following_repo,2012-10-16 08:31:44.802094
1525 1585,3,demo,54,glib,"",user_forked_repo:fork-glib,2012-10-16 08:31:51.952999
1525 1585,3,demo,54,glib,"",user_forked_repo:fork-glib,2012-10-16 08:31:51.952999
1526 1586,3,demo,301,fork-glib,"",user_created_fork:fork-glib,2012-10-16 08:31:51.967931
1526 1586,3,demo,301,fork-glib,"",user_created_fork:fork-glib,2012-10-16 08:31:51.967931
1527 1587,3,demo,285,aloha,78.29.10.71,push:c7feb9671fc451e40758b9ed10496d854ba18a40,2012-10-16 08:34:12.115912
1527 1587,3,demo,285,aloha,78.29.10.71,push:c7feb9671fc451e40758b9ed10496d854ba18a40,2012-10-16 08:34:12.115912
1528 1588,270,raoul1,302,TestRaoul,"",started_following_repo,2012-10-16 09:24:57.710057
1528 1588,270,raoul1,302,TestRaoul,"",started_following_repo,2012-10-16 09:24:57.710057
1529 1589,270,raoul1,302,TestRaoul,"",user_created_repo,2012-10-16 09:24:57.725416
1529 1589,270,raoul1,302,TestRaoul,"",user_created_repo,2012-10-16 09:24:57.725416
1530 1590,270,raoul1,302,TestRaoul,"",user_updated_repo,2012-10-16 09:25:13.334125
1530 1590,270,raoul1,302,TestRaoul,"",user_updated_repo,2012-10-16 09:25:13.334125
1531 1591,270,raoul1,302,TestRaoul,"",user_updated_repo,2012-10-16 09:27:33.159359
1531 1591,270,raoul1,302,TestRaoul,"",user_updated_repo,2012-10-16 09:27:33.159359
1532 1592,271,raoul2,302,TestRaoul,"",user_updated_repo,2012-10-16 09:30:24.581076
1532 1592,271,raoul2,302,TestRaoul,"",user_updated_repo,2012-10-16 09:30:24.581076
1533 1593,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-10-16 10:14:32.596831
1533 1593,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-10-16 10:14:32.596831
1534 1594,272,jamesc,303,Magical-Cheese-Repo,"",started_following_repo,2012-10-16 12:10:35.216711
1534 1594,272,jamesc,303,Magical-Cheese-Repo,"",started_following_repo,2012-10-16 12:10:35.216711
1535 1595,272,jamesc,303,Magical-Cheese-Repo,"",user_created_repo,2012-10-16 12:10:35.231231
1535 1595,272,jamesc,303,Magical-Cheese-Repo,"",user_created_repo,2012-10-16 12:10:35.231231
1536 1596,272,jamesc,304,Cheese-Fork,"",started_following_repo,2012-10-16 12:11:16.231228
1536 1596,272,jamesc,304,Cheese-Fork,"",started_following_repo,2012-10-16 12:11:16.231228
1537 1597,272,jamesc,303,Magical-Cheese-Repo,"",user_forked_repo:Cheese-Fork,2012-10-16 12:11:16.248472
1537 1597,272,jamesc,303,Magical-Cheese-Repo,"",user_forked_repo:Cheese-Fork,2012-10-16 12:11:16.248472
1538 1598,272,jamesc,304,Cheese-Fork,"",user_created_fork:Cheese-Fork,2012-10-16 12:11:16.2598
1538 1598,272,jamesc,304,Cheese-Fork,"",user_created_fork:Cheese-Fork,2012-10-16 12:11:16.2598
1539 1599,272,jamesc,304,Cheese-Fork,"",push_local:47c7945748501f71737af1e83f5036cd17bde506,2012-10-16 12:13:20.106608
1539 1599,272,jamesc,304,Cheese-Fork,"",push_local:47c7945748501f71737af1e83f5036cd17bde506,2012-10-16 12:13:20.106608
1540 1600,3,demo,,sproject,"",started_following_repo,2012-10-16 14:07:45.531949
1540 1600,3,demo,,sproject,"",started_following_repo,2012-10-16 14:07:45.531949
1541 1601,3,demo,,sproject,"",user_created_repo,2012-10-16 14:07:45.550972
1541 1601,3,demo,,sproject,"",user_created_repo,2012-10-16 14:07:45.550972
1542 1602,3,demo,,sproject,"",user_deleted_repo,2012-10-16 14:12:00.222929
1542 1602,3,demo,,sproject,"",user_deleted_repo,2012-10-16 14:12:00.222929
1543 1603,3,demo,35,fork-Something22,"",user_updated_repo,2012-10-16 14:16:04.092997
1543 1603,3,demo,35,fork-Something22,"",user_updated_repo,2012-10-16 14:16:04.092997
1544 1604,3,demo,306,testflow,"",started_following_repo,2012-10-16 18:58:10.988582
1544 1604,3,demo,306,testflow,"",started_following_repo,2012-10-16 18:58:10.988582
1545 1605,3,demo,306,testflow,"",user_created_repo,2012-10-16 18:58:11.002092
1545 1605,3,demo,306,testflow,"",user_created_repo,2012-10-16 18:58:11.002092
1546 1665,3,demo,268,foofootest,"",user_updated_repo,2012-10-17 20:41:34.07778
1546 1665,3,demo,268,foofootest,"",user_updated_repo,2012-10-17 20:41:34.07778
1547 1666,1,default,266,fork-mercurial-trunk,78.53.4.31,pull,2012-10-18 00:34:23.822311
1547 1666,1,default,266,fork-mercurial-trunk,78.53.4.31,pull,2012-10-18 00:34:23.822311
1548 1667,1,default,265,mercurial-trunk,78.53.4.31,pull,2012-10-18 00:35:14.549948
1548 1667,1,default,265,mercurial-trunk,78.53.4.31,pull,2012-10-18 00:35:14.549948
1549 1668,3,demo,34,a,"",push_local:a778c8853f594759661bf6e8fa9933dbd0c06390,2012-10-18 06:49:15.999219
1549 1668,3,demo,34,a,"",push_local:a778c8853f594759661bf6e8fa9933dbd0c06390,2012-10-18 06:49:15.999219
1550 1669,3,demo,314,Test123654,"",started_following_repo,2012-10-18 09:13:40.498593
1550 1669,3,demo,314,Test123654,"",started_following_repo,2012-10-18 09:13:40.498593
1551 1670,3,demo,314,Test123654,"",user_created_repo,2012-10-18 09:13:40.514075
1551 1670,3,demo,314,Test123654,"",user_created_repo,2012-10-18 09:13:40.514075
1552 1671,3,demo,315,fork-a-foo,"",started_following_repo,2012-10-18 10:55:34.287082
1552 1671,3,demo,315,fork-a-foo,"",started_following_repo,2012-10-18 10:55:34.287082
1553 1672,3,demo,298,a-foo,"",user_forked_repo:fork-a-foo,2012-10-18 10:55:34.304187
1553 1672,3,demo,298,a-foo,"",user_forked_repo:fork-a-foo,2012-10-18 10:55:34.304187
1554 1673,3,demo,315,fork-a-foo,"",user_created_fork:fork-a-foo,2012-10-18 10:55:34.313058
1554 1673,3,demo,315,fork-a-foo,"",user_created_fork:fork-a-foo,2012-10-18 10:55:34.313058
1555 1674,279,sugia,316,Llskdjfsldkfjl,"",started_following_repo,2012-10-19 08:20:45.345545
1555 1674,279,sugia,316,Llskdjfsldkfjl,"",started_following_repo,2012-10-19 08:20:45.345545
1556 1675,279,sugia,316,Llskdjfsldkfjl,"",user_created_repo,2012-10-19 08:20:45.355759
1556 1675,279,sugia,316,Llskdjfsldkfjl,"",user_created_repo,2012-10-19 08:20:45.355759
1557 1676,279,sugia,316,Llskdjfsldkfjl,"",user_updated_repo,2012-10-19 08:21:47.944967
1557 1676,279,sugia,316,Llskdjfsldkfjl,"",user_updated_repo,2012-10-19 08:21:47.944967
1558 1677,3,demo,317,foo-baz,"",started_following_repo,2012-10-19 14:14:29.057573
1558 1677,3,demo,317,foo-baz,"",started_following_repo,2012-10-19 14:14:29.057573
1559 1678,3,demo,317,foo-baz,"",user_created_repo,2012-10-19 14:14:29.070434
1559 1678,3,demo,317,foo-baz,"",user_created_repo,2012-10-19 14:14:29.070434
1560 1679,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-10-19 16:10:33.532318
1560 1679,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-10-19 16:10:33.532318
1561 1680,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-19 21:10:05.655859
1561 1680,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-19 21:10:05.655859
1562 1681,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-19 21:10:17.138554
1562 1681,3,demo,249,abcdefg,"",user_commented_revision:ef6c825bc5699b95a31ae3075693b12693a623e2,2012-10-19 21:10:17.138554
1563 1607,3,demo,306,testflow,69.36.131.254,"push:139bacf66d2ae74543bf01385d53434b5e619324,c9828e4c945cbbc0b98ebcb3633960a7495d6526",2012-10-16 20:15:52.423766
1563 1607,3,demo,306,testflow,69.36.131.254,"push:139bacf66d2ae74543bf01385d53434b5e619324,c9828e4c945cbbc0b98ebcb3633960a7495d6526",2012-10-16 20:15:52.423766
1564 1608,3,demo,307,zippo,"",started_following_repo,2012-10-16 21:57:00.837578
1564 1608,3,demo,307,zippo,"",started_following_repo,2012-10-16 21:57:00.837578
1565 1609,3,demo,307,zippo,"",user_created_repo,2012-10-16 21:57:00.852928
1565 1609,3,demo,307,zippo,"",user_created_repo,2012-10-16 21:57:00.852928
1566 1610,3,demo,307,zippo,"",user_updated_repo,2012-10-16 21:58:05.136205
1566 1610,3,demo,307,zippo,"",user_updated_repo,2012-10-16 21:58:05.136205
1567 1611,3,demo,307,zippo,"",user_updated_repo,2012-10-16 21:58:17.135464
1567 1611,3,demo,307,zippo,"",user_updated_repo,2012-10-16 21:58:17.135464
1568 1612,1,default,306,testflow,92.225.130.117,pull,2012-10-16 23:26:14.536761
1568 1612,1,default,306,testflow,92.225.130.117,pull,2012-10-16 23:26:14.536761
1569 1613,3,demo,230,eks1,"",user_commented_revision:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-10-17 10:01:12.801645
1569 1613,3,demo,230,eks1,"",user_commented_revision:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-10-17 10:01:12.801645
1570 1614,3,demo,230,eks1,"",user_commented_revision:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-10-17 10:01:24.827945
1570 1614,3,demo,230,eks1,"",user_commented_revision:7be3eb971e236dd0c1d7b7c4637e7fab9c0a8eff,2012-10-17 10:01:24.827945
1571 1615,3,demo,308,fork-abcdefg,"",started_following_repo,2012-10-17 10:46:38.608309
1571 1615,3,demo,308,fork-abcdefg,"",started_following_repo,2012-10-17 10:46:38.608309
1572 1616,3,demo,249,abcdefg,"",user_forked_repo:fork-abcdefg,2012-10-17 10:46:38.625094
1572 1616,3,demo,249,abcdefg,"",user_forked_repo:fork-abcdefg,2012-10-17 10:46:38.625094
1573 1617,3,demo,308,fork-abcdefg,"",user_created_fork:fork-abcdefg,2012-10-17 10:46:38.636906
1573 1617,3,demo,308,fork-abcdefg,"",user_created_fork:fork-abcdefg,2012-10-17 10:46:38.636906
1574 1618,3,demo,308,fork-abcdefg,"",push_local:89b42b250956797b6bad5c7edbf873efe1b03d75,2012-10-17 10:47:28.606347
1574 1618,3,demo,308,fork-abcdefg,"",push_local:89b42b250956797b6bad5c7edbf873efe1b03d75,2012-10-17 10:47:28.606347
1575 1619,3,demo,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 10:51:05.868185
1575 1619,3,demo,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 10:51:05.868185
1576 1620,2,admin,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 15:34:01.14742
1576 1620,2,admin,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 15:34:01.14742
1577 1621,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:36:37.784768
1577 1621,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:36:37.784768
1578 1622,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:37:36.599064
1578 1622,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:37:36.599064
1579 1623,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:38:14.176552
1579 1623,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:38:14.176552
1580 1624,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:38:41.016672
1580 1624,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:125ff5654b72009b251706d7ee93051853f066b6,2012-10-17 15:38:41.016672
1581 1625,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:1bd18c415eec578b5a8cc3bb61c65e554f4674e1,2012-10-17 15:39:31.815756
1581 1625,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:1bd18c415eec578b5a8cc3bb61c65e554f4674e1,2012-10-17 15:39:31.815756
1582 1626,276,niels,309,fork-bla,"",started_following_repo,2012-10-17 16:14:16.700471
1582 1626,276,niels,309,fork-bla,"",started_following_repo,2012-10-17 16:14:16.700471
1583 1627,276,niels,278,bla,"",user_forked_repo:fork-bla,2012-10-17 16:14:16.804166
1583 1627,276,niels,278,bla,"",user_forked_repo:fork-bla,2012-10-17 16:14:16.804166
1584 1628,276,niels,309,fork-bla,"",user_created_fork:fork-bla,2012-10-17 16:14:16.818566
1584 1628,276,niels,309,fork-bla,"",user_created_fork:fork-bla,2012-10-17 16:14:16.818566
1585 1629,3,demo,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 16:21:09.732638
1585 1629,3,demo,249,abcdefg,"",user_commented_pull_request:69,2012-10-17 16:21:09.732638
1586 1630,3,demo,249,abcdefg,"",user_closed_pull_request:69,2012-10-17 16:21:09.743958
1586 1630,3,demo,249,abcdefg,"",user_closed_pull_request:69,2012-10-17 16:21:09.743958
1587 1631,3,demo,310,ForkMe,"",started_following_repo,2012-10-17 16:39:43.040558
1587 1631,3,demo,310,ForkMe,"",started_following_repo,2012-10-17 16:39:43.040558
1588 1632,3,demo,310,ForkMe,"",user_created_repo,2012-10-17 16:39:43.051548
1588 1632,3,demo,310,ForkMe,"",user_created_repo,2012-10-17 16:39:43.051548
1589 1633,3,demo,310,ForkMe,20.132.68.148,"push:20867b19ea55d7afa34238c5b42e8f0cf9336fb9,57b41cfbab38011c7d95d929afe8c54d41d229c7,c473af323363c2ce57b1dd3baaf671eabbbe3d9b,11d5db13f3886df26fa9052d664dd99c7ad7a32f,d7d1bb376a19e46ce927520f6863c286aae3d118,160f86cca435674ce9fbd7fb34a7eb1684cd753e,44d8bad99c89ba30af51c0fb96d0c4f5ff679b67,12253658153cfdcab846f64b91f13f56631abae1,ec85db68de4419c2cdaa9e9a4c0cd0a12e161c9e,98e055683c7acd57b6393fffb5bc9ef7fd8386aa,9fd9140573cfccdb795905c962d515fd199024a1",2012-10-17 16:40:52.585834
1589 1633,3,demo,310,ForkMe,20.132.68.148,"push:20867b19ea55d7afa34238c5b42e8f0cf9336fb9,57b41cfbab38011c7d95d929afe8c54d41d229c7,c473af323363c2ce57b1dd3baaf671eabbbe3d9b,11d5db13f3886df26fa9052d664dd99c7ad7a32f,d7d1bb376a19e46ce927520f6863c286aae3d118,160f86cca435674ce9fbd7fb34a7eb1684cd753e,44d8bad99c89ba30af51c0fb96d0c4f5ff679b67,12253658153cfdcab846f64b91f13f56631abae1,ec85db68de4419c2cdaa9e9a4c0cd0a12e161c9e,98e055683c7acd57b6393fffb5bc9ef7fd8386aa,9fd9140573cfccdb795905c962d515fd199024a1",2012-10-17 16:40:52.585834
1590 1634,3,demo,311,ForkForForkMe,"",started_following_repo,2012-10-17 16:41:54.089171
1590 1634,3,demo,311,ForkForForkMe,"",started_following_repo,2012-10-17 16:41:54.089171
1591 1635,3,demo,310,ForkMe,"",user_forked_repo:ForkForForkMe,2012-10-17 16:41:54.105915
1591 1635,3,demo,310,ForkMe,"",user_forked_repo:ForkForForkMe,2012-10-17 16:41:54.105915
1592 1636,3,demo,311,ForkForForkMe,"",user_created_fork:ForkForForkMe,2012-10-17 16:41:54.119943
1592 1636,3,demo,311,ForkForForkMe,"",user_created_fork:ForkForForkMe,2012-10-17 16:41:54.119943
1593 1637,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 16:42:50.019391
1593 1637,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 16:42:50.019391
1594 1638,3,demo,311,ForkForForkMe,20.132.68.148,push:7f7a317f656658d18438fa4f2effca0cfe1bee77,2012-10-17 16:43:30.115193
1594 1638,3,demo,311,ForkForForkMe,20.132.68.148,push:7f7a317f656658d18438fa4f2effca0cfe1bee77,2012-10-17 16:43:30.115193
1595 1639,3,demo,310,ForkMe,"",user_commented_pull_request:70,2012-10-17 16:45:19.643124
1595 1639,3,demo,310,ForkMe,"",user_commented_pull_request:70,2012-10-17 16:45:19.643124
1596 1640,3,demo,310,ForkMe,"",user_closed_pull_request:70,2012-10-17 16:45:19.651818
1596 1640,3,demo,310,ForkMe,"",user_closed_pull_request:70,2012-10-17 16:45:19.651818
1597 1641,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 16:55:41.290306
1597 1641,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 16:55:41.290306
1598 1642,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:01:31.007755
1598 1642,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:01:31.007755
1599 1643,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 17:02:42.098164
1599 1643,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 17:02:42.098164
1600 1644,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:05:59.739608
1600 1644,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:05:59.739608
1601 1645,3,demo,311,ForkForForkMe,20.132.68.148,"push:3ebc10c9b1ea1d26ff9ede63104d6ab24bf6d37d,e2687070a7d4092aafde9343ad79c57c39ec016f",2012-10-17 17:17:21.346216
1601 1645,3,demo,311,ForkForForkMe,20.132.68.148,"push:3ebc10c9b1ea1d26ff9ede63104d6ab24bf6d37d,e2687070a7d4092aafde9343ad79c57c39ec016f",2012-10-17 17:17:21.346216
1602 1646,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 17:17:56.010058
1602 1646,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 17:17:56.010058
1603 1647,3,demo,312,pepepe,"",started_following_repo,2012-10-17 17:20:14.076678
1603 1647,3,demo,312,pepepe,"",started_following_repo,2012-10-17 17:20:14.076678
1604 1648,3,demo,312,pepepe,"",user_created_repo,2012-10-17 17:20:14.089715
1604 1648,3,demo,312,pepepe,"",user_created_repo,2012-10-17 17:20:14.089715
1605 1649,3,demo,311,ForkForForkMe,20.132.68.148,"push:37298d3eed24e9209bfaf5b43bda114b28d99363,1dc8b7b3029c583069aa80ebc5b570c11cea998b",2012-10-17 17:20:19.128212
1605 1649,3,demo,311,ForkForForkMe,20.132.68.148,"push:37298d3eed24e9209bfaf5b43bda114b28d99363,1dc8b7b3029c583069aa80ebc5b570c11cea998b",2012-10-17 17:20:19.128212
1606 1650,3,demo,312,pepepe,"",push_local:72fc0eb74ecaffd64c3594744f8ad0634f68ab2b,2012-10-17 17:20:35.135261
1606 1650,3,demo,312,pepepe,"",push_local:72fc0eb74ecaffd64c3594744f8ad0634f68ab2b,2012-10-17 17:20:35.135261
1607 1651,3,demo,312,pepepe,"",user_commented_revision:72fc0eb74ecaffd64c3594744f8ad0634f68ab2b,2012-10-17 17:20:53.662433
1607 1651,3,demo,312,pepepe,"",user_commented_revision:72fc0eb74ecaffd64c3594744f8ad0634f68ab2b,2012-10-17 17:20:53.662433
1608 1652,3,demo,313,fork-pepepe,"",started_following_repo,2012-10-17 17:21:29.352267
1608 1652,3,demo,313,fork-pepepe,"",started_following_repo,2012-10-17 17:21:29.352267
1609 1653,3,demo,312,pepepe,"",user_forked_repo:fork-pepepe,2012-10-17 17:21:29.36938
1609 1653,3,demo,312,pepepe,"",user_forked_repo:fork-pepepe,2012-10-17 17:21:29.36938
1610 1654,3,demo,313,fork-pepepe,"",user_created_fork:fork-pepepe,2012-10-17 17:21:29.382134
1610 1654,3,demo,313,fork-pepepe,"",user_created_fork:fork-pepepe,2012-10-17 17:21:29.382134
1611 1655,3,demo,313,fork-pepepe,"",push_local:d96f66d613e7c90004b0be702fa00acb5c64d22b,2012-10-17 17:22:27.210919
1611 1655,3,demo,313,fork-pepepe,"",push_local:d96f66d613e7c90004b0be702fa00acb5c64d22b,2012-10-17 17:22:27.210919
1612 1656,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:22:51.855061
1612 1656,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 17:22:51.855061
1613 1657,3,demo,312,pepepe,"",user_commented_pull_request:71,2012-10-17 17:23:15.633271
1613 1657,3,demo,312,pepepe,"",user_commented_pull_request:71,2012-10-17 17:23:15.633271
1614 1658,3,demo,312,pepepe,"",user_closed_pull_request:71,2012-10-17 17:23:15.639775
1614 1658,3,demo,312,pepepe,"",user_closed_pull_request:71,2012-10-17 17:23:15.639775
1615 1659,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 19:44:37.643519
1615 1659,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 19:44:37.643519
1616 1660,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 19:49:02.152121
1616 1660,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 19:49:02.152121
1617 1661,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 19:51:33.051372
1617 1661,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 19:51:33.051372
1618 1662,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 20:02:23.092402
1618 1662,1,default,310,ForkMe,20.132.68.148,pull,2012-10-17 20:02:23.092402
1619 1663,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 20:21:12.146576
1619 1663,1,default,311,ForkForForkMe,20.132.68.148,pull,2012-10-17 20:21:12.146576
1620 1664,3,demo,269,fork-foofootest,"",user_updated_repo,2012-10-17 20:39:09.557172
1620 1664,3,demo,269,fork-foofootest,"",user_updated_repo,2012-10-17 20:39:09.557172
1621 1682,3,demo,249,abcdefg,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-10-19 21:11:07.868323
1621 1682,3,demo,249,abcdefg,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-10-19 21:11:07.868323
1622 1683,280,SylvainC,318,testrcd99,"",started_following_repo,2012-10-19 22:52:25.55997
1622 1683,280,SylvainC,318,testrcd99,"",started_following_repo,2012-10-19 22:52:25.55997
1623 1684,280,SylvainC,318,testrcd99,"",user_created_repo,2012-10-19 22:52:25.572046
1623 1684,280,SylvainC,318,testrcd99,"",user_created_repo,2012-10-19 22:52:25.572046
1624 1685,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:15:14.542145
1624 1685,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:15:14.542145
1625 1686,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:16:01.295617
1625 1686,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:16:01.295617
1626 1687,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:20:08.509514
1626 1687,281,coderazor,38,code-review-test,"",user_commented_pull_request:65,2012-10-19 23:20:08.509514
1627 1688,281,coderazor,319,fork1-code-review-test,"",started_following_repo,2012-10-20 00:46:43.404342
1627 1688,281,coderazor,319,fork1-code-review-test,"",started_following_repo,2012-10-20 00:46:43.404342
1628 1689,281,coderazor,38,code-review-test,"",user_forked_repo:fork1-code-review-test,2012-10-20 00:46:43.464675
1628 1689,281,coderazor,38,code-review-test,"",user_forked_repo:fork1-code-review-test,2012-10-20 00:46:43.464675
1629 1690,281,coderazor,319,fork1-code-review-test,"",user_created_fork:fork1-code-review-test,2012-10-20 00:46:43.473779
1629 1690,281,coderazor,319,fork1-code-review-test,"",user_created_fork:fork1-code-review-test,2012-10-20 00:46:43.473779
1630 1691,281,coderazor,319,fork1-code-review-test,"",push_local:98690895f701c1827ea962fe81985b6094a3f00e,2012-10-20 00:48:45.66637
1630 1691,281,coderazor,319,fork1-code-review-test,"",push_local:98690895f701c1827ea962fe81985b6094a3f00e,2012-10-20 00:48:45.66637
1631 1692,281,coderazor,319,fork1-code-review-test,"",push_local:b364947ef413a4b2f43bb76ba221d47c1794a8e1,2012-10-20 00:49:40.078971
1631 1692,281,coderazor,319,fork1-code-review-test,"",push_local:b364947ef413a4b2f43bb76ba221d47c1794a8e1,2012-10-20 00:49:40.078971
1632 1693,281,coderazor,319,fork1-code-review-test,"",user_commented_revision:b364947ef413a4b2f43bb76ba221d47c1794a8e1,2012-10-20 00:50:35.035023
1632 1693,281,coderazor,319,fork1-code-review-test,"",user_commented_revision:b364947ef413a4b2f43bb76ba221d47c1794a8e1,2012-10-20 00:50:35.035023
1633 1694,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:54:57.701596
1633 1694,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:54:57.701596
1634 1695,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:55:44.681278
1634 1695,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:55:44.681278
1635 1696,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:55:59.492315
1635 1696,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 00:55:59.492315
1636 1697,281,coderazor,319,fork1-code-review-test,"",push_local:e216971a777e3132487405dd2c8e093f66788765,2012-10-20 00:59:53.583102
1636 1697,281,coderazor,319,fork1-code-review-test,"",push_local:e216971a777e3132487405dd2c8e093f66788765,2012-10-20 00:59:53.583102
1637 1698,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:01:16.602261
1637 1698,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:01:16.602261
1638 1699,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:03:46.692176
1638 1699,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:03:46.692176
1639 1700,281,coderazor,38,code-review-test,"",user_commented_pull_request:73,2012-10-20 01:06:18.310904
1639 1700,281,coderazor,38,code-review-test,"",user_commented_pull_request:73,2012-10-20 01:06:18.310904
1640 1701,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:07:52.891399
1640 1701,281,coderazor,38,code-review-test,"",user_commented_pull_request:72,2012-10-20 01:07:52.891399
1641 1702,281,coderazor,38,code-review-test,"",user_closed_pull_request:72,2012-10-20 01:07:52.900684
1641 1702,281,coderazor,38,code-review-test,"",user_closed_pull_request:72,2012-10-20 01:07:52.900684
1642 1703,283,vaidasn,320,svn2git.git,"",started_following_repo,2012-10-20 19:40:57.345453
1642 1703,283,vaidasn,320,svn2git.git,"",started_following_repo,2012-10-20 19:40:57.345453
1643 1704,283,vaidasn,320,svn2git.git,"",user_created_repo,2012-10-20 19:40:57.365761
1643 1704,283,vaidasn,320,svn2git.git,"",user_created_repo,2012-10-20 19:40:57.365761
1644 1705,3,demo,321,Mecurial-Test,"",started_following_repo,2012-10-22 06:13:45.980502
1644 1705,3,demo,321,Mecurial-Test,"",started_following_repo,2012-10-22 06:13:45.980502
1645 1706,3,demo,321,Mecurial-Test,"",user_created_repo,2012-10-22 06:13:45.997596
1645 1706,3,demo,321,Mecurial-Test,"",user_created_repo,2012-10-22 06:13:45.997596
1646 1707,3,demo,321,Mecurial-Test,69.196.152.196,push:e66dfe4e33871da460d3807c8b015863bf7240b7,2012-10-22 06:54:33.247493
1646 1707,3,demo,321,Mecurial-Test,69.196.152.196,push:e66dfe4e33871da460d3807c8b015863bf7240b7,2012-10-22 06:54:33.247493
1647 1708,3,demo,321,Mecurial-Test,"",user_updated_repo,2012-10-22 06:56:19.772283
1647 1708,3,demo,321,Mecurial-Test,"",user_updated_repo,2012-10-22 06:56:19.772283
1648 1709,3,demo,321,Mecurial-Test,69.196.152.196,push:eee6785689defc10df9fe6e8d0921facaab0e176,2012-10-22 07:08:00.585766
1648 1709,3,demo,321,Mecurial-Test,69.196.152.196,push:eee6785689defc10df9fe6e8d0921facaab0e176,2012-10-22 07:08:00.585766
1649 1710,3,demo,321,Mecurial-Test,69.196.152.196,push:fd10c02cfbfbf4a7d7659c67998c6f95da5dc4de,2012-10-22 07:10:59.095472
1649 1710,3,demo,321,Mecurial-Test,69.196.152.196,push:fd10c02cfbfbf4a7d7659c67998c6f95da5dc4de,2012-10-22 07:10:59.095472
1650 1711,254,yujiro,322,fork-code-review-dev,"",started_following_repo,2012-10-22 10:01:47.558754
1650 1711,254,yujiro,322,fork-code-review-dev,"",started_following_repo,2012-10-22 10:01:47.558754
1651 1712,254,yujiro,173,code-review-dev,"",user_forked_repo:fork-code-review-dev,2012-10-22 10:01:47.58102
1651 1712,254,yujiro,173,code-review-dev,"",user_forked_repo:fork-code-review-dev,2012-10-22 10:01:47.58102
1652 1713,254,yujiro,322,fork-code-review-dev,"",user_created_fork:fork-code-review-dev,2012-10-22 10:01:47.59189
1652 1713,254,yujiro,322,fork-code-review-dev,"",user_created_fork:fork-code-review-dev,2012-10-22 10:01:47.59189
1653 1714,285,zza,323,TestZZa,"",started_following_repo,2012-10-22 11:36:34.479105
1653 1714,285,zza,323,TestZZa,"",started_following_repo,2012-10-22 11:36:34.479105
1654 1715,285,zza,323,TestZZa,"",user_created_repo,2012-10-22 11:36:34.488683
1654 1715,285,zza,323,TestZZa,"",user_created_repo,2012-10-22 11:36:34.488683
1655 1716,285,zza,323,TestZZa,"",user_updated_repo,2012-10-22 11:37:27.008002
1655 1716,285,zza,323,TestZZa,"",user_updated_repo,2012-10-22 11:37:27.008002
1656 1717,285,zza,323,TestZZa,"",user_updated_repo,2012-10-22 11:37:40.09398
1656 1717,285,zza,323,TestZZa,"",user_updated_repo,2012-10-22 11:37:40.09398
1657 1718,3,demo,285,aloha,"",push_local:f6aea433e6b6cb05d4af9ac74bac0da5fd09c8ba,2012-10-22 12:50:54.991895
1657 1718,3,demo,285,aloha,"",push_local:f6aea433e6b6cb05d4af9ac74bac0da5fd09c8ba,2012-10-22 12:50:54.991895
1658 1719,1,default,321,Mecurial-Test,67.70.161.159,pull,2012-10-22 15:41:30.593105
1658 1719,1,default,321,Mecurial-Test,67.70.161.159,pull,2012-10-22 15:41:30.593105
1659 1720,3,demo,321,Mecurial-Test,67.70.161.159,push:041e48fd7acad4c27385c27a4789d3d5cc7ccbea,2012-10-22 16:39:38.382409
1659 1720,3,demo,321,Mecurial-Test,67.70.161.159,push:041e48fd7acad4c27385c27a4789d3d5cc7ccbea,2012-10-22 16:39:38.382409
1660 1721,1,default,321,Mecurial-Test,69.196.152.196,pull,2012-10-22 23:13:11.713227
1660 1721,1,default,321,Mecurial-Test,69.196.152.196,pull,2012-10-22 23:13:11.713227
1661 1722,3,demo,325,testkyro,"",started_following_repo,2012-10-23 13:27:46.011096
1661 1722,3,demo,325,testkyro,"",started_following_repo,2012-10-23 13:27:46.011096
1662 1723,3,demo,325,testkyro,"",user_created_repo,2012-10-23 13:27:46.024014
1662 1723,3,demo,325,testkyro,"",user_created_repo,2012-10-23 13:27:46.024014
1663 1724,3,demo,325,testkyro,"",user_updated_repo,2012-10-23 13:28:29.072813
1663 1724,3,demo,325,testkyro,"",user_updated_repo,2012-10-23 13:28:29.072813
1664 1725,3,demo,326,ReallyCoolProject,"",started_following_repo,2012-10-23 14:22:15.477077
1664 1725,3,demo,326,ReallyCoolProject,"",started_following_repo,2012-10-23 14:22:15.477077
1665 1726,3,demo,326,ReallyCoolProject,"",user_created_repo,2012-10-23 14:22:15.492068
1665 1726,3,demo,326,ReallyCoolProject,"",user_created_repo,2012-10-23 14:22:15.492068
1666 1727,3,demo,326,ReallyCoolProject,"",push_local:262220ea2a60e92577f2193cd9ee4f9707760fb5,2012-10-23 14:23:56.826353
1666 1727,3,demo,326,ReallyCoolProject,"",push_local:262220ea2a60e92577f2193cd9ee4f9707760fb5,2012-10-23 14:23:56.826353
1667 1728,288,kiall,327,kiall-test,"",started_following_repo,2012-10-23 15:50:27.397495
1667 1728,288,kiall,327,kiall-test,"",started_following_repo,2012-10-23 15:50:27.397495
1668 1729,288,kiall,327,kiall-test,"",user_created_repo,2012-10-23 15:50:27.42126
1668 1729,288,kiall,327,kiall-test,"",user_created_repo,2012-10-23 15:50:27.42126
1669 1730,288,kiall,329,fork-aaa-projects,"",started_following_repo,2012-10-23 15:53:23.020591
1669 1730,288,kiall,329,fork-aaa-projects,"",started_following_repo,2012-10-23 15:53:23.020591
1670 1731,288,kiall,68,aaa-project,"",user_forked_repo:fork-aaa-projects,2012-10-23 15:53:23.043059
1670 1731,288,kiall,68,aaa-project,"",user_forked_repo:fork-aaa-projects,2012-10-23 15:53:23.043059
1671 1732,288,kiall,329,fork-aaa-projects,"",user_created_fork:fork-aaa-projects,2012-10-23 15:53:23.052289
1671 1732,288,kiall,329,fork-aaa-projects,"",user_created_fork:fork-aaa-projects,2012-10-23 15:53:23.052289
1672 1733,288,kiall,328,kiall-nova,"",started_following_repo,2012-10-23 15:53:45.417443
1672 1733,288,kiall,328,kiall-nova,"",started_following_repo,2012-10-23 15:53:45.417443
1673 1734,288,kiall,328,kiall-nova,"",user_created_repo,2012-10-23 15:53:45.434684
1673 1734,288,kiall,328,kiall-nova,"",user_created_repo,2012-10-23 15:53:45.434684
1674 1735,288,kiall,329,fork-aaa-projects,"",push_local:417cac332ab3512a08d5454cfcbffc21471e1f6f,2012-10-23 15:53:50.165591
1674 1735,288,kiall,329,fork-aaa-projects,"",push_local:417cac332ab3512a08d5454cfcbffc21471e1f6f,2012-10-23 15:53:50.165591
1675 1736,3,demo,330,z123,"",started_following_repo,2012-10-23 15:58:30.652495
1675 1736,3,demo,330,z123,"",started_following_repo,2012-10-23 15:58:30.652495
1676 1737,3,demo,330,z123,"",user_created_repo,2012-10-23 15:58:30.665854
1676 1737,3,demo,330,z123,"",user_created_repo,2012-10-23 15:58:30.665854
1677 1738,3,demo,330,z123,"",push_local:0ba461ee4cd15d51f416b1073d4389574150f5ca,2012-10-23 15:59:26.238194
1677 1738,3,demo,330,z123,"",push_local:0ba461ee4cd15d51f416b1073d4389574150f5ca,2012-10-23 15:59:26.238194
1678 1739,3,demo,330,z123,"",user_updated_repo,2012-10-23 16:01:08.667715
1678 1739,3,demo,330,z123,"",user_updated_repo,2012-10-23 16:01:08.667715
1679 1740,288,kiall,331,kiall-hg,"",started_following_repo,2012-10-23 16:01:24.811434
1679 1740,288,kiall,331,kiall-hg,"",started_following_repo,2012-10-23 16:01:24.811434
1680 1741,288,kiall,331,kiall-hg,"",user_created_repo,2012-10-23 16:01:24.820628
1680 1741,288,kiall,331,kiall-hg,"",user_created_repo,2012-10-23 16:01:24.820628
1681 1742,1,default,330,z123,80.149.98.186,pull,2012-10-23 16:02:35.273406
1681 1742,1,default,330,z123,80.149.98.186,pull,2012-10-23 16:02:35.273406
1682 1743,3,demo,330,z123,80.149.98.186,push:b89e8c4620b21ec38d159c644b173a1c93efafea,2012-10-23 16:04:08.66449
1682 1743,3,demo,330,z123,80.149.98.186,push:b89e8c4620b21ec38d159c644b173a1c93efafea,2012-10-23 16:04:08.66449
1683 1744,3,demo,330,z123,"",user_commented_revision:b89e8c4620b21ec38d159c644b173a1c93efafea,2012-10-23 16:04:55.372793
1683 1744,3,demo,330,z123,"",user_commented_revision:b89e8c4620b21ec38d159c644b173a1c93efafea,2012-10-23 16:04:55.372793
1684 1745,2,admin,,"","",admin_updated_user:kiall,2012-10-23 16:05:04.180487
1684 1745,2,admin,,"","",admin_updated_user:kiall,2012-10-23 16:05:04.180487
1685 1746,3,demo,330,z123,"",stopped_following_repo,2012-10-23 16:16:39.414967
1685 1746,3,demo,330,z123,"",stopped_following_repo,2012-10-23 16:16:39.414967
1686 1747,3,demo,34,a,"",push_local:106ab79178979f8e464e5cc8f432347f8c203dde,2012-10-23 16:24:17.669006
1686 1747,3,demo,34,a,"",push_local:106ab79178979f8e464e5cc8f432347f8c203dde,2012-10-23 16:24:17.669006
1687 1748,3,demo,332,IAmTesting-this,"",started_following_repo,2012-10-23 18:51:16.88748
1687 1748,3,demo,332,IAmTesting-this,"",started_following_repo,2012-10-23 18:51:16.88748
1688 1749,3,demo,332,IAmTesting-this,"",user_created_repo,2012-10-23 18:51:16.902186
1688 1749,3,demo,332,IAmTesting-this,"",user_created_repo,2012-10-23 18:51:16.902186
1689 1750,3,demo,333,IAmTesting_this,"",started_following_repo,2012-10-23 19:15:24.347861
1689 1750,3,demo,333,IAmTesting_this,"",started_following_repo,2012-10-23 19:15:24.347861
1690 1751,3,demo,333,IAmTesting_this,"",user_created_repo,2012-10-23 19:15:24.361363
1690 1751,3,demo,333,IAmTesting_this,"",user_created_repo,2012-10-23 19:15:24.361363
1691 1752,3,demo,333,IAmTesting_this,"",user_updated_repo,2012-10-23 19:35:36.723229
1691 1752,3,demo,333,IAmTesting_this,"",user_updated_repo,2012-10-23 19:35:36.723229
1692 1753,1,default,333,IAmTesting_this,194.117.18.103,push:31ca1f206de23b0d257dcbb323f9ba94e142ceb5,2012-10-23 19:59:07.360826
1692 1753,1,default,333,IAmTesting_this,194.117.18.103,push:31ca1f206de23b0d257dcbb323f9ba94e142ceb5,2012-10-23 19:59:07.360826
1693 1754,3,demo,334,Test1qwerty,"",started_following_repo,2012-10-23 20:56:13.001385
1693 1754,3,demo,334,Test1qwerty,"",started_following_repo,2012-10-23 20:56:13.001385
1694 1755,3,demo,334,Test1qwerty,"",user_created_repo,2012-10-23 20:56:13.014633
1694 1755,3,demo,334,Test1qwerty,"",user_created_repo,2012-10-23 20:56:13.014633
1695 1756,3,demo,334,Test1qwerty,"",push_local:5957aa6f6f14241663b8b1a0ca050e43c3d3ca27,2012-10-23 20:57:25.88513
1695 1756,3,demo,334,Test1qwerty,"",push_local:5957aa6f6f14241663b8b1a0ca050e43c3d3ca27,2012-10-23 20:57:25.88513
1696 1757,3,demo,335,git,"",started_following_repo,2012-10-23 21:49:35.974797
1696 1757,3,demo,335,git,"",started_following_repo,2012-10-23 21:49:35.974797
1697 1758,3,demo,335,git,"",user_created_repo,2012-10-23 21:49:35.994798
1697 1758,3,demo,335,git,"",user_created_repo,2012-10-23 21:49:35.994798
1698 1759,3,demo,336,fork-cruel-test-2,"",started_following_repo,2012-10-23 23:49:23.770508
1698 1759,3,demo,336,fork-cruel-test-2,"",started_following_repo,2012-10-23 23:49:23.770508
1699 1760,3,demo,174,releases/cruel-test-2,"",user_forked_repo:fork-cruel-test-2,2012-10-23 23:49:23.85229
1699 1760,3,demo,174,releases/cruel-test-2,"",user_forked_repo:fork-cruel-test-2,2012-10-23 23:49:23.85229
1700 1761,3,demo,336,fork-cruel-test-2,"",user_created_fork:fork-cruel-test-2,2012-10-23 23:49:23.867582
1700 1761,3,demo,336,fork-cruel-test-2,"",user_created_fork:fork-cruel-test-2,2012-10-23 23:49:23.867582
1701 1762,3,demo,337,why-testing,"",started_following_repo,2012-10-23 23:53:03.878941
1701 1762,3,demo,337,why-testing,"",started_following_repo,2012-10-23 23:53:03.878941
1702 1763,3,demo,337,why-testing,"",user_created_repo,2012-10-23 23:53:03.893321
1702 1763,3,demo,337,why-testing,"",user_created_repo,2012-10-23 23:53:03.893321
1703 1764,3,demo,338,temp11,"",started_following_repo,2012-10-24 10:43:46.379754
1703 1764,3,demo,338,temp11,"",started_following_repo,2012-10-24 10:43:46.379754
1704 1765,3,demo,338,temp11,"",user_created_repo,2012-10-24 10:43:46.391127
1704 1765,3,demo,338,temp11,"",user_created_repo,2012-10-24 10:43:46.391127
1705 1766,3,demo,339,test123,"",started_following_repo,2012-10-24 14:10:41.927001
1705 1766,3,demo,339,test123,"",started_following_repo,2012-10-24 14:10:41.927001
1706 1767,3,demo,339,test123,"",user_created_repo,2012-10-24 14:10:41.936239
1706 1767,3,demo,339,test123,"",user_created_repo,2012-10-24 14:10:41.936239
1707 1768,3,demo,339,releases/test123,"",user_updated_repo,2012-10-24 14:10:57.739304
1707 1768,3,demo,339,releases/test123,"",user_updated_repo,2012-10-24 14:10:57.739304
1708 1769,2,admin,339,releases/test123,146.48.87.66,push:87e9dcd8d3e375c218fdb747da52dc1551a93dc7,2012-10-24 14:12:02.63513
1708 1769,2,admin,339,releases/test123,146.48.87.66,push:87e9dcd8d3e375c218fdb747da52dc1551a93dc7,2012-10-24 14:12:02.63513
1709 1770,292,Airframe,340,Testtestac,"",started_following_repo,2012-10-24 17:09:26.37836
1709 1770,292,Airframe,340,Testtestac,"",started_following_repo,2012-10-24 17:09:26.37836
1710 1771,292,Airframe,340,Testtestac,"",user_created_repo,2012-10-24 17:09:26.387917
1710 1771,292,Airframe,340,Testtestac,"",user_created_repo,2012-10-24 17:09:26.387917
1711 1772,293,imbehind,190,rhodecode,"",user_commented_revision:008d9c6f7c92636aaeda6f182bffecac6a464dd3,2012-10-24 20:38:59.535098
1711 1772,293,imbehind,190,xxx,"",user_commented_revision:008d9c6f7c92636aaeda6f182bffecac6a464dd3,2012-10-24 20:38:59.535098
1712 1773,3,demo,341,MicTest,"",started_following_repo,2012-10-24 20:59:34.176289
1712 1773,3,demo,341,MicTest,"",started_following_repo,2012-10-24 20:59:34.176289
1713 1774,3,demo,341,MicTest,"",user_created_repo,2012-10-24 20:59:34.186308
1713 1774,3,demo,341,MicTest,"",user_created_repo,2012-10-24 20:59:34.186308
1714 1775,3,demo,341,MicTest,"",push_local:327bf84d0d633a66f0c7ff4533de2415c9ff5a88,2012-10-24 21:00:28.379598
1714 1775,3,demo,341,MicTest,"",push_local:327bf84d0d633a66f0c7ff4533de2415c9ff5a88,2012-10-24 21:00:28.379598
1715 1776,295,mhassanzadeh,342,ttest,"",started_following_repo,2012-10-25 10:50:06.001658
1715 1776,295,mhassanzadeh,342,ttest,"",started_following_repo,2012-10-25 10:50:06.001658
1716 1777,295,mhassanzadeh,342,ttest,"",user_created_repo,2012-10-25 10:50:06.011192
1716 1777,295,mhassanzadeh,342,ttest,"",user_created_repo,2012-10-25 10:50:06.011192
1717 1807,306,foobar,,foobar,"",user_forked_repo:fork-foobar,2012-10-30 05:39:47.942232
1717 1807,306,foobar,,foobar,"",user_forked_repo:fork-foobar,2012-10-30 05:39:47.942232
1718 1809,306,foobar,,foobar,24.67.50.255,push:0e3a7dcdd90bdb2a1f6dbe85e7b574e4f6304207,2012-10-30 05:50:43.083487
1718 1809,306,foobar,,foobar,24.67.50.255,push:0e3a7dcdd90bdb2a1f6dbe85e7b574e4f6304207,2012-10-30 05:50:43.083487
1719 1781,3,demo,,fork-rawr,"",user_deleted_repo,2012-10-25 15:14:56.164313
1719 1781,3,demo,,fork-rawr,"",user_deleted_repo,2012-10-25 15:14:56.164313
1720 1782,3,demo,343,test_git_repo,"",started_following_repo,2012-10-26 13:31:41.642802
1720 1782,3,demo,343,test_git_repo,"",started_following_repo,2012-10-26 13:31:41.642802
1721 1783,3,demo,343,test_git_repo,"",user_created_repo,2012-10-26 13:31:41.653854
1721 1783,3,demo,343,test_git_repo,"",user_created_repo,2012-10-26 13:31:41.653854
1722 1784,2,admin,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-10-27 15:38:54.924143
1722 1784,2,admin,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-10-27 15:38:54.924143
1723 1785,3,demo,344,sadfasdf,"",started_following_repo,2012-10-28 11:41:22.491275
1723 1785,3,demo,344,sadfasdf,"",started_following_repo,2012-10-28 11:41:22.491275
1724 1786,3,demo,344,sadfasdf,"",user_created_repo,2012-10-28 11:41:22.503388
1724 1786,3,demo,344,sadfasdf,"",user_created_repo,2012-10-28 11:41:22.503388
1725 1787,3,demo,345,fork-dvorak,"",started_following_repo,2012-10-29 09:43:08.276759
1725 1787,3,demo,345,fork-dvorak,"",started_following_repo,2012-10-29 09:43:08.276759
1726 1788,3,demo,129,dvorak,"",user_forked_repo:fork-dvorak,2012-10-29 09:43:08.321733
1726 1788,3,demo,129,dvorak,"",user_forked_repo:fork-dvorak,2012-10-29 09:43:08.321733
1727 1789,3,demo,345,fork-dvorak,"",user_created_fork:fork-dvorak,2012-10-29 09:43:08.329436
1727 1789,3,demo,345,fork-dvorak,"",user_created_fork:fork-dvorak,2012-10-29 09:43:08.329436
1728 1790,3,demo,346,my-test-repo,"",started_following_repo,2012-10-29 09:45:29.684135
1728 1790,3,demo,346,my-test-repo,"",started_following_repo,2012-10-29 09:45:29.684135
1729 1791,3,demo,346,my-test-repo,"",user_created_repo,2012-10-29 09:45:29.694219
1729 1791,3,demo,346,my-test-repo,"",user_created_repo,2012-10-29 09:45:29.694219
1730 1792,3,demo,347,fork-aaa-project111,"",started_following_repo,2012-10-29 09:50:58.797507
1730 1792,3,demo,347,fork-aaa-project111,"",started_following_repo,2012-10-29 09:50:58.797507
1731 1793,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project111,2012-10-29 09:50:58.809098
1731 1793,3,demo,68,aaa-project,"",user_forked_repo:fork-aaa-project111,2012-10-29 09:50:58.809098
1732 1794,3,demo,347,fork-aaa-project111,"",user_created_fork:fork-aaa-project111,2012-10-29 09:50:58.816283
1732 1794,3,demo,347,fork-aaa-project111,"",user_created_fork:fork-aaa-project111,2012-10-29 09:50:58.816283
1733 1795,2,admin,348,group/I-am-a-very-long-repository-name,"",started_following_repo,2012-10-29 15:51:18.519038
1733 1795,2,admin,348,group/I-am-a-very-long-repository-name,"",started_following_repo,2012-10-29 15:51:18.519038
1734 1796,2,admin,348,group/I-am-a-very-long-repository-name,"",admin_created_repo,2012-10-29 15:51:18.528651
1734 1796,2,admin,348,group/I-am-a-very-long-repository-name,"",admin_created_repo,2012-10-29 15:51:18.528651
1735 1797,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",user_updated_repo,2012-10-29 17:32:06.365281
1735 1797,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",user_updated_repo,2012-10-29 17:32:06.365281
1736 1798,3,demo,350,misisko-repo,"",started_following_repo,2012-10-29 20:19:56.180975
1736 1798,3,demo,350,misisko-repo,"",started_following_repo,2012-10-29 20:19:56.180975
1737 1799,3,demo,350,misisko-repo,"",user_created_repo,2012-10-29 20:19:56.190032
1737 1799,3,demo,350,misisko-repo,"",user_created_repo,2012-10-29 20:19:56.190032
1738 1800,3,demo,350,misisko-repo,195.168.239.153,push:34bd2e2b6cf2abdb0e026182b9342f95d8f6f440,2012-10-29 20:21:33.067763
1738 1800,3,demo,350,misisko-repo,195.168.239.153,push:34bd2e2b6cf2abdb0e026182b9342f95d8f6f440,2012-10-29 20:21:33.067763
1739 1801,3,demo,350,misisko-repo,"",user_commented_revision:34bd2e2b6cf2abdb0e026182b9342f95d8f6f440,2012-10-29 20:23:32.816207
1739 1801,3,demo,350,misisko-repo,"",user_commented_revision:34bd2e2b6cf2abdb0e026182b9342f95d8f6f440,2012-10-29 20:23:32.816207
1740 1802,2,admin,350,misisko-repo,"",push_local:89a041cce422153ba0716a2beb2b5711ee4f4280,2012-10-29 21:23:56.649892
1740 1802,2,admin,350,misisko-repo,"",push_local:89a041cce422153ba0716a2beb2b5711ee4f4280,2012-10-29 21:23:56.649892
1741 1806,306,foobar,,fork-foobar,"",started_following_repo,2012-10-30 05:39:47.86196
1741 1806,306,foobar,,fork-foobar,"",started_following_repo,2012-10-30 05:39:47.86196
1742 1808,306,foobar,,fork-foobar,"",user_created_fork:fork-foobar,2012-10-30 05:39:47.956653
1742 1808,306,foobar,,fork-foobar,"",user_created_fork:fork-foobar,2012-10-30 05:39:47.956653
1743 1811,306,foobar,,fork-foobar,"",user_deleted_repo,2012-10-30 05:56:06.059093
1743 1811,306,foobar,,fork-foobar,"",user_deleted_repo,2012-10-30 05:56:06.059093
1744 1803,306,foobar,,foobar,"",started_following_repo,2012-10-30 05:36:49.915108
1744 1803,306,foobar,,foobar,"",started_following_repo,2012-10-30 05:36:49.915108
1745 1804,306,foobar,,foobar,"",user_created_repo,2012-10-30 05:36:49.929097
1745 1804,306,foobar,,foobar,"",user_created_repo,2012-10-30 05:36:49.929097
1746 1805,306,foobar,,foobar,24.67.50.255,push:3b0ad3c9b89dec8bcac5ec8bc9846f307dd5f291,2012-10-30 05:38:30.960676
1746 1805,306,foobar,,foobar,24.67.50.255,push:3b0ad3c9b89dec8bcac5ec8bc9846f307dd5f291,2012-10-30 05:38:30.960676
1747 1810,306,foobar,,foobar,24.67.50.255,push:5066e223f81d3983b9bc4d959c509bbce326474c,2012-10-30 05:53:14.168715
1747 1810,306,foobar,,foobar,24.67.50.255,push:5066e223f81d3983b9bc4d959c509bbce326474c,2012-10-30 05:53:14.168715
1748 1812,306,foobar,,foobar,"",user_deleted_repo,2012-10-30 05:56:35.211293
1748 1812,306,foobar,,foobar,"",user_deleted_repo,2012-10-30 05:56:35.211293
1749 1813,3,demo,354,DibaDaba,"",started_following_repo,2012-10-30 10:55:03.068862
1749 1813,3,demo,354,DibaDaba,"",started_following_repo,2012-10-30 10:55:03.068862
1750 1814,3,demo,354,DibaDaba,"",user_created_repo,2012-10-30 10:55:03.088077
1750 1814,3,demo,354,DibaDaba,"",user_created_repo,2012-10-30 10:55:03.088077
1751 1815,3,demo,354,DibaDaba,"",push_local:cf41636a602d2a69128cc58fdf441857afb83827,2012-10-30 10:56:16.451197
1751 1815,3,demo,354,DibaDaba,"",push_local:cf41636a602d2a69128cc58fdf441857afb83827,2012-10-30 10:56:16.451197
1752 1816,3,demo,354,DibaDaba,"",user_updated_repo,2012-10-30 11:05:50.836108
1752 1816,3,demo,354,DibaDaba,"",user_updated_repo,2012-10-30 11:05:50.836108
1753 1817,3,demo,354,DibaDaba,"",push_local:15453a2035510dcefbc8b7f3e45b916003ae4a0f,2012-10-30 11:18:42.79919
1753 1817,3,demo,354,DibaDaba,"",push_local:15453a2035510dcefbc8b7f3e45b916003ae4a0f,2012-10-30 11:18:42.79919
1754 1818,3,demo,355,Test-RohdeCode,"",started_following_repo,2012-10-30 21:07:27.016976
1754 1818,3,demo,355,Test-RohdeCode,"",started_following_repo,2012-10-30 21:07:27.016976
1755 1819,3,demo,355,Test-RohdeCode,"",user_created_repo,2012-10-30 21:07:27.040381
1755 1819,3,demo,355,Test-RohdeCode,"",user_created_repo,2012-10-30 21:07:27.040381
1756 1820,3,demo,355,Test-RohdeCode,"",push_local:a2c7c944a5bae039181a84bec8bc89a9bb4ac68c,2012-10-31 10:52:21.038578
1756 1820,3,demo,355,Test-RohdeCode,"",push_local:a2c7c944a5bae039181a84bec8bc89a9bb4ac68c,2012-10-31 10:52:21.038578
1757 1821,3,demo,355,Test-RohdeCode,"",push_local:303c0051c7a04b5a4f77654d8cfeb09a61322e15,2012-10-31 16:32:16.917289
1757 1821,3,demo,355,Test-RohdeCode,"",push_local:303c0051c7a04b5a4f77654d8cfeb09a61322e15,2012-10-31 16:32:16.917289
1758 1822,3,demo,356,testdzone,"",started_following_repo,2012-11-02 15:51:18.982652
1758 1822,3,demo,356,testdzone,"",started_following_repo,2012-11-02 15:51:18.982652
1759 1823,3,demo,356,testdzone,"",user_created_repo,2012-11-02 15:51:18.994144
1759 1823,3,demo,356,testdzone,"",user_created_repo,2012-11-02 15:51:18.994144
1760 1824,3,demo,357,firs,"",started_following_repo,2012-11-04 00:37:08.689703
1760 1824,3,demo,357,firs,"",started_following_repo,2012-11-04 00:37:08.689703
1761 1825,3,demo,357,firs,"",user_created_repo,2012-11-04 00:37:08.700977
1761 1825,3,demo,357,firs,"",user_created_repo,2012-11-04 00:37:08.700977
1762 1826,316,theo,358,brightandshiny,"",started_following_repo,2012-11-04 14:17:04.270938
1762 1826,316,theo,358,brightandshiny,"",started_following_repo,2012-11-04 14:17:04.270938
1763 1827,316,theo,358,brightandshiny,"",user_created_repo,2012-11-04 14:17:04.286049
1763 1827,316,theo,358,brightandshiny,"",user_created_repo,2012-11-04 14:17:04.286049
1764 1828,316,theo,358,brightandshiny,87.165.13.203,"push:831fd48093c38f64bb541a4c12bec45d27c13f9d,0177264991ad113c2dbeed00716738931bc0222f",2012-11-04 14:21:33.759458
1764 1828,316,theo,358,brightandshiny,87.165.13.203,"push:831fd48093c38f64bb541a4c12bec45d27c13f9d,0177264991ad113c2dbeed00716738931bc0222f",2012-11-04 14:21:33.759458
1765 1829,3,demo,45,group/fork-bootstrap,"",started_following_repo,2012-11-04 18:25:45.459487
1765 1829,3,demo,45,group/fork-bootstrap,"",started_following_repo,2012-11-04 18:25:45.459487
1766 1830,3,demo,45,group/fork-bootstrap,"",stopped_following_repo,2012-11-04 18:25:48.166886
1766 1830,3,demo,45,group/fork-bootstrap,"",stopped_following_repo,2012-11-04 18:25:48.166886
1767 1831,3,demo,45,group/fork-bootstrap,"",started_following_repo,2012-11-04 18:25:51.905362
1767 1831,3,demo,45,group/fork-bootstrap,"",started_following_repo,2012-11-04 18:25:51.905362
1768 1832,3,demo,45,group/fork-bootstrap,"",stopped_following_repo,2012-11-04 18:25:54.406445
1768 1832,3,demo,45,group/fork-bootstrap,"",stopped_following_repo,2012-11-04 18:25:54.406445
1769 1833,3,demo,227,fork-aaa-project-2,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-11-05 18:37:48.772572
1769 1833,3,demo,227,fork-aaa-project-2,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-11-05 18:37:48.772572
1770 1834,3,demo,227,fork-aaa-project-2,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-11-05 18:38:42.521316
1770 1834,3,demo,227,fork-aaa-project-2,"",user_commented_revision:bc829c34912709c7d129e5dae9a3e5ff46e77fc7,2012-11-05 18:38:42.521316
1771 1835,3,demo,359,MyUberRepo,"",started_following_repo,2012-11-05 22:04:02.939575
1771 1835,3,demo,359,MyUberRepo,"",started_following_repo,2012-11-05 22:04:02.939575
1772 1836,3,demo,359,MyUberRepo,"",user_created_repo,2012-11-05 22:04:02.95609
1772 1836,3,demo,359,MyUberRepo,"",user_created_repo,2012-11-05 22:04:02.95609
1773 1837,3,demo,359,MyUberRepo,"",push_local:a67ddbdca6d533e0cd43175068cc12f526b2f95f,2012-11-05 22:07:40.846096
1773 1837,3,demo,359,MyUberRepo,"",push_local:a67ddbdca6d533e0cd43175068cc12f526b2f95f,2012-11-05 22:07:40.846096
1774 1838,3,demo,360,marese_test,"",started_following_repo,2012-11-05 22:10:35.535744
1774 1838,3,demo,360,marese_test,"",started_following_repo,2012-11-05 22:10:35.535744
1775 1839,3,demo,360,marese_test,"",user_created_repo,2012-11-05 22:10:35.547878
1775 1839,3,demo,360,marese_test,"",user_created_repo,2012-11-05 22:10:35.547878
1776 1840,3,demo,361,test-23,"",started_following_repo,2012-11-06 04:01:46.385817
1776 1840,3,demo,361,test-23,"",started_following_repo,2012-11-06 04:01:46.385817
1777 1841,3,demo,361,test-23,"",user_created_repo,2012-11-06 04:01:46.410423
1777 1841,3,demo,361,test-23,"",user_created_repo,2012-11-06 04:01:46.410423
1778 1842,3,demo,361,test-23,"",push_local:7d8547b154a01c7055a09292e871e80f3c6b574b,2012-11-06 04:03:03.320736
1778 1842,3,demo,361,test-23,"",push_local:7d8547b154a01c7055a09292e871e80f3c6b574b,2012-11-06 04:03:03.320736
1779 1843,3,demo,361,test-23,"",user_commented_revision:7d8547b154a01c7055a09292e871e80f3c6b574b,2012-11-06 04:07:20.51212
1779 1843,3,demo,361,test-23,"",user_commented_revision:7d8547b154a01c7055a09292e871e80f3c6b574b,2012-11-06 04:07:20.51212
1780 1844,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:12:51.753053
1780 1844,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:12:51.753053
1781 1845,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:13:30.727101
1781 1845,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:13:30.727101
1782 1846,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:15:29.032768
1782 1846,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:fba17a64fa4978bfea19222da5e64a18cfddeecd,2012-11-06 04:15:29.032768
1783 1847,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-11-06 04:17:16.091927
1783 1847,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-11-06 04:17:16.091927
1784 1848,3,demo,249,abcdefg,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-11-06 06:10:53.372505
1784 1848,3,demo,249,abcdefg,"",user_commented_revision:5d80e28538141e322b317168e2367fb03178d58c,2012-11-06 06:10:53.372505
1785 1849,3,demo,362,Marcin,"",started_following_repo,2012-11-06 10:45:38.505485
1785 1849,3,demo,362,Marcin,"",started_following_repo,2012-11-06 10:45:38.505485
1786 1850,3,demo,362,Marcin,"",user_created_repo,2012-11-06 10:45:38.518969
1786 1850,3,demo,362,Marcin,"",user_created_repo,2012-11-06 10:45:38.518969
1787 1851,3,demo,362,hidden/Marcin,"",user_updated_repo,2012-11-06 10:45:46.281581
1787 1851,3,demo,362,hidden/Marcin,"",user_updated_repo,2012-11-06 10:45:46.281581
1788 1852,3,demo,177,blah,62.200.22.2,push:b369fb18c8d61fe0d3b14c417466680230cabe46,2012-11-06 10:47:55.655029
1788 1852,3,demo,177,blah,62.200.22.2,push:b369fb18c8d61fe0d3b14c417466680230cabe46,2012-11-06 10:47:55.655029
1789 1853,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-11-06 13:12:05.517155
1789 1853,3,demo,99,another-fork-to-check-code-review,"",user_commented_revision:d5422faf648cc589425cd3b0dbf1f6dbf93036a0,2012-11-06 13:12:05.517155
1790 1854,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-11-06 16:12:59.38977
1790 1854,3,demo,38,code-review-test,"",user_commented_revision:6d7db5794e8cad7da042b6ae6238116c6e59a4d2,2012-11-06 16:12:59.38977
1791 1855,3,demo,363,utf8-test,"",started_following_repo,2012-11-06 16:52:34.020264
1791 1855,3,demo,363,utf8-test,"",started_following_repo,2012-11-06 16:52:34.020264
1792 1856,3,demo,363,utf8-test,"",user_created_repo,2012-11-06 16:52:34.036171
1792 1856,3,demo,363,utf8-test,"",user_created_repo,2012-11-06 16:52:34.036171
1793 1857,3,demo,363,utf8-test,178.6.80.143,push:e9e69068b8277c8e857984fb44e54d4e057710bd,2012-11-06 16:54:30.357337
1793 1857,3,demo,363,utf8-test,178.6.80.143,push:e9e69068b8277c8e857984fb44e54d4e057710bd,2012-11-06 16:54:30.357337
1794 1858,320,blahblub,364,abc_test,"",started_following_repo,2012-11-06 22:06:45.476725
1794 1858,320,blahblub,364,abc_test,"",started_following_repo,2012-11-06 22:06:45.476725
1795 1859,320,blahblub,364,abc_test,"",user_created_repo,2012-11-06 22:06:45.488546
1795 1859,320,blahblub,364,abc_test,"",user_created_repo,2012-11-06 22:06:45.488546
1796 1860,320,blahblub,364,abc_test,81.190.220.154,"push:e05d82d631f4a61972c2c76eb5b473c55ee6133f,dccf54ebc0638183872cfd9d35f0f49aa44ad4bc",2012-11-06 22:07:39.657839
1796 1860,320,blahblub,364,abc_test,81.190.220.154,"push:e05d82d631f4a61972c2c76eb5b473c55ee6133f,dccf54ebc0638183872cfd9d35f0f49aa44ad4bc",2012-11-06 22:07:39.657839
1797 1861,320,blahblub,364,abc_test,81.190.220.154,push:8ef2f06b68eb25067c4ca3a9c73c89bb681f031b,2012-11-06 22:09:18.572762
1797 1861,320,blahblub,364,abc_test,81.190.220.154,push:8ef2f06b68eb25067c4ca3a9c73c89bb681f031b,2012-11-06 22:09:18.572762
1798 1862,3,demo,365,testing_do,"",started_following_repo,2012-11-07 00:19:56.15291
1798 1862,3,demo,365,testing_do,"",started_following_repo,2012-11-07 00:19:56.15291
1799 1863,3,demo,365,testing_do,"",user_created_repo,2012-11-07 00:19:56.165626
1799 1863,3,demo,365,testing_do,"",user_created_repo,2012-11-07 00:19:56.165626
1800 1864,3,demo,365,testing_do,"",user_updated_repo,2012-11-07 00:21:24.482025
1800 1864,3,demo,365,testing_do,"",user_updated_repo,2012-11-07 00:21:24.482025
1801 1865,3,demo,321,Mecurial-Test,"",user_commented_revision:041e48fd7acad4c27385c27a4789d3d5cc7ccbea,2012-11-07 01:16:37.129361
1801 1865,3,demo,321,Mecurial-Test,"",user_commented_revision:041e48fd7acad4c27385c27a4789d3d5cc7ccbea,2012-11-07 01:16:37.129361
1802 1866,321,ifco89,284,fork-django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-11-07 01:26:40.887017
1802 1866,321,ifco89,284,fork-django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-11-07 01:26:40.887017
1803 1867,3,demo,284,fork-django,"",user_commented_revision:c5d6f6d6829e730bdddf63c1252304f0c49a9053,2012-11-07 01:27:33.995596
1803 1867,3,demo,284,fork-django,"",user_commented_revision:c5d6f6d6829e730bdddf63c1252304f0c49a9053,2012-11-07 01:27:33.995596
1804 1868,3,demo,68,aaa-project,"",push_local:5ecd97456233badb3680873dc5b7d4bfb52ede79,2012-11-07 06:43:22.378406
1804 1868,3,demo,68,aaa-project,"",push_local:5ecd97456233badb3680873dc5b7d4bfb52ede79,2012-11-07 06:43:22.378406
1805 1869,3,demo,319,fork1-code-review-test,"",user_commented_revision:e216971a777e3132487405dd2c8e093f66788765,2012-11-07 08:44:19.419642
1805 1869,3,demo,319,fork1-code-review-test,"",user_commented_revision:e216971a777e3132487405dd2c8e093f66788765,2012-11-07 08:44:19.419642
1806 1870,3,demo,366,test123123,"",started_following_repo,2012-11-07 14:16:13.029479
1806 1870,3,demo,366,test123123,"",started_following_repo,2012-11-07 14:16:13.029479
1807 1871,3,demo,366,test123123,"",user_created_repo,2012-11-07 14:16:13.04346
1807 1871,3,demo,366,test123123,"",user_created_repo,2012-11-07 14:16:13.04346
1808 1872,323,didi,364,abc_test,"",user_commented_revision:8ef2f06b68eb25067c4ca3a9c73c89bb681f031b,2012-11-07 15:45:10.378961
1808 1872,323,didi,364,abc_test,"",user_commented_revision:8ef2f06b68eb25067c4ca3a9c73c89bb681f031b,2012-11-07 15:45:10.378961
1809 1873,324,tutty,367,fork-bootstrap,"",started_following_repo,2012-11-07 16:00:47.116111
1809 1873,324,tutty,367,fork-bootstrap,"",started_following_repo,2012-11-07 16:00:47.116111
1810 1874,324,tutty,36,bootstrap,"",user_forked_repo:fork-bootstrap,2012-11-07 16:00:48.378051
1810 1874,324,tutty,36,bootstrap,"",user_forked_repo:fork-bootstrap,2012-11-07 16:00:48.378051
1811 1875,324,tutty,367,fork-bootstrap,"",user_created_fork:fork-bootstrap,2012-11-07 16:00:48.393002
1811 1875,324,tutty,367,fork-bootstrap,"",user_created_fork:fork-bootstrap,2012-11-07 16:00:48.393002
1812 1876,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:07.016059
1812 1876,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:07.016059
1813 1877,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:34.311311
1813 1877,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:34.311311
1814 1878,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:38.071834
1814 1878,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-08 18:41:38.071834
1815 1879,3,demo,368,Repotest,"",started_following_repo,2012-11-09 10:40:40.804085
1815 1879,3,demo,368,Repotest,"",started_following_repo,2012-11-09 10:40:40.804085
1816 1880,3,demo,368,Repotest,"",user_created_repo,2012-11-09 10:40:40.813114
1816 1880,3,demo,368,Repotest,"",user_created_repo,2012-11-09 10:40:40.813114
1817 1881,3,demo,369,fork-HelloWorld,"",started_following_repo,2012-11-10 19:57:46.238558
1817 1881,3,demo,369,fork-HelloWorld,"",started_following_repo,2012-11-10 19:57:46.238558
1818 1882,3,demo,280,HelloWorld,"",user_forked_repo:fork-HelloWorld,2012-11-10 19:57:46.306001
1818 1882,3,demo,280,HelloWorld,"",user_forked_repo:fork-HelloWorld,2012-11-10 19:57:46.306001
1819 1883,3,demo,369,fork-HelloWorld,"",user_created_fork:fork-HelloWorld,2012-11-10 19:57:46.320675
1819 1883,3,demo,369,fork-HelloWorld,"",user_created_fork:fork-HelloWorld,2012-11-10 19:57:46.320675
1820 1884,3,demo,370,fork-django-more,"",started_following_repo,2012-11-11 01:18:51.709667
1820 1884,3,demo,370,fork-django-more,"",started_following_repo,2012-11-11 01:18:51.709667
1821 1885,3,demo,110,django,"",user_forked_repo:fork-django-more,2012-11-11 01:18:58.716934
1821 1885,3,demo,110,django,"",user_forked_repo:fork-django-more,2012-11-11 01:18:58.716934
1822 1886,3,demo,370,fork-django-more,"",user_created_fork:fork-django-more,2012-11-11 01:18:58.731127
1822 1886,3,demo,370,fork-django-more,"",user_created_fork:fork-django-more,2012-11-11 01:18:58.731127
1823 1887,3,demo,371,hgh,"",started_following_repo,2012-11-12 06:07:06.509759
1823 1887,3,demo,371,hgh,"",started_following_repo,2012-11-12 06:07:06.509759
1824 1888,3,demo,371,hgh,"",user_created_repo,2012-11-12 06:07:06.525795
1824 1888,3,demo,371,hgh,"",user_created_repo,2012-11-12 06:07:06.525795
1825 1889,3,demo,371,hgh,"",push_local:b43f437976ff61a8fa37709f105091ffd00bbd2c,2012-11-12 06:08:34.009007
1825 1889,3,demo,371,hgh,"",push_local:b43f437976ff61a8fa37709f105091ffd00bbd2c,2012-11-12 06:08:34.009007
1826 1890,3,demo,371,hgh,"",push_local:93c5a23d3cbde4c6dbd21d722eb1beff90a1d67c,2012-11-12 06:09:44.749181
1826 1890,3,demo,371,hgh,"",push_local:93c5a23d3cbde4c6dbd21d722eb1beff90a1d67c,2012-11-12 06:09:44.749181
1827 1891,3,demo,371,hgh,"",push_local:d3e97cf131b0feaa586272d88e71e97a65564806,2012-11-12 06:13:04.240444
1827 1891,3,demo,371,hgh,"",push_local:d3e97cf131b0feaa586272d88e71e97a65564806,2012-11-12 06:13:04.240444
1828 1892,336,demodemo,373,test-for,"",started_following_repo,2012-11-12 18:29:12.02868
1828 1892,336,demodemo,373,test-for,"",started_following_repo,2012-11-12 18:29:12.02868
1829 1893,336,demodemo,373,test-for,"",user_created_repo,2012-11-12 18:29:12.041121
1829 1893,336,demodemo,373,test-for,"",user_created_repo,2012-11-12 18:29:12.041121
1830 1894,336,demodemo,374,fork-test-for,"",started_following_repo,2012-11-12 18:29:25.869055
1830 1894,336,demodemo,374,fork-test-for,"",started_following_repo,2012-11-12 18:29:25.869055
1831 1895,336,demodemo,373,test-for,"",user_forked_repo:fork-test-for,2012-11-12 18:29:25.922561
1831 1895,336,demodemo,373,test-for,"",user_forked_repo:fork-test-for,2012-11-12 18:29:25.922561
1832 1896,336,demodemo,374,fork-test-for,"",user_created_fork:fork-test-for,2012-11-12 18:29:25.936869
1832 1896,336,demodemo,374,fork-test-for,"",user_created_fork:fork-test-for,2012-11-12 18:29:25.936869
1833 1897,336,demodemo,374,fork-test-for,101.140.96.42,push:a7495b86f0bfc299740cdbfbbca1b9d5ca1f62de,2012-11-12 18:31:51.107494
1833 1897,336,demodemo,374,fork-test-for,101.140.96.42,push:a7495b86f0bfc299740cdbfbbca1b9d5ca1f62de,2012-11-12 18:31:51.107494
1834 1898,2,admin,376,linux-kernel,"",started_following_repo,2012-11-13 22:14:17.466937
1834 1898,2,admin,376,linux-kernel,"",started_following_repo,2012-11-13 22:14:17.466937
1835 1899,342,gauravve,377,myrep,"",started_following_repo,2012-11-14 12:12:46.280751
1835 1899,342,gauravve,377,myrep,"",started_following_repo,2012-11-14 12:12:46.280751
1836 1900,342,gauravve,377,myrep,"",user_created_repo,2012-11-14 12:12:46.296606
1836 1900,342,gauravve,377,myrep,"",user_created_repo,2012-11-14 12:12:46.296606
1837 1901,343,yasser.a,125,test-to-end-all-tests,"",user_commented_revision:fb4eb182028a674ae250430c04305e9b3fbe508e,2012-11-14 16:17:28.970017
1837 1901,343,yasser.a,125,test-to-end-all-tests,"",user_commented_revision:fb4eb182028a674ae250430c04305e9b3fbe508e,2012-11-14 16:17:28.970017
1838 772,2,admin,,cruel-test,"",started_following_repo,2012-08-28 10:23:44.560576
1838 772,2,admin,,cruel-test,"",started_following_repo,2012-08-28 10:23:44.560576
1839 1902,254,yujiro,378,arai-new-repo,"",started_following_repo,2012-11-15 02:39:50.649631
1839 1902,254,yujiro,378,arai-new-repo,"",started_following_repo,2012-11-15 02:39:50.649631
1840 1903,254,yujiro,378,arai-new-repo,"",user_created_repo,2012-11-15 02:39:50.667177
1840 1903,254,yujiro,378,arai-new-repo,"",user_created_repo,2012-11-15 02:39:50.667177
1841 1904,254,yujiro,378,arai-new-repo,182.171.245.184,push:6beb6da3b0e27eb1401090e122f7675d56e07fc1,2012-11-15 02:45:25.207338
1841 1904,254,yujiro,378,arai-new-repo,182.171.245.184,push:6beb6da3b0e27eb1401090e122f7675d56e07fc1,2012-11-15 02:45:25.207338
1842 1905,3,demo,381,test01012145,"",started_following_repo,2012-11-16 13:02:38.980282
1842 1905,3,demo,381,test01012145,"",started_following_repo,2012-11-16 13:02:38.980282
1843 1906,3,demo,381,test01012145,"",user_created_repo,2012-11-16 13:02:38.989119
1843 1906,3,demo,381,test01012145,"",user_created_repo,2012-11-16 13:02:38.989119
1844 1907,3,demo,381,test01012145,"",push_local:225a9898957de5f78ac2aa8e4d46a80eed3ee6d5,2012-11-16 13:04:53.384353
1844 1907,3,demo,381,test01012145,"",push_local:225a9898957de5f78ac2aa8e4d46a80eed3ee6d5,2012-11-16 13:04:53.384353
1845 1908,3,demo,382,aaa-repo-fork,"",started_following_repo,2012-11-17 12:58:42.919876
1845 1908,3,demo,382,aaa-repo-fork,"",started_following_repo,2012-11-17 12:58:42.919876
1846 1909,3,demo,67,group/aaa-repo,"",user_forked_repo:aaa-repo-fork,2012-11-17 12:58:42.981111
1846 1909,3,demo,67,group/aaa-repo,"",user_forked_repo:aaa-repo-fork,2012-11-17 12:58:42.981111
1847 1910,3,demo,382,aaa-repo-fork,"",user_created_fork:aaa-repo-fork,2012-11-17 12:58:42.992071
1847 1910,3,demo,382,aaa-repo-fork,"",user_created_fork:aaa-repo-fork,2012-11-17 12:58:42.992071
1848 1911,3,demo,382,aaa-repo-fork,"",user_updated_repo,2012-11-17 12:59:32.084662
1848 1911,3,demo,382,aaa-repo-fork,"",user_updated_repo,2012-11-17 12:59:32.084662
1849 1912,2,admin,,"","",admin_updated_user:kiall,2012-11-17 21:52:15.776253
1849 1912,2,admin,,"","",admin_updated_user:kiall,2012-11-17 21:52:15.776253
1850 1913,3,demo,268,foofootest,"",user_commented_revision:4bc0645c20363db85c9a5050a85c2c05a1991765,2012-11-20 12:19:44.614295
1850 1913,3,demo,268,foofootest,"",user_commented_revision:4bc0645c20363db85c9a5050a85c2c05a1991765,2012-11-20 12:19:44.614295
1851 1914,3,demo,383,aaa-test-repo,"",started_following_repo,2012-11-20 12:27:16.120325
1851 1914,3,demo,383,aaa-test-repo,"",started_following_repo,2012-11-20 12:27:16.120325
1852 1915,3,demo,383,aaa-test-repo,"",user_created_repo,2012-11-20 12:27:16.130553
1852 1915,3,demo,383,aaa-test-repo,"",user_created_repo,2012-11-20 12:27:16.130553
1853 1916,3,demo,383,aaa-test-repo,"",push_local:fb2f5ae9a806abe4cb03fe7b11d4ad21a836f7b6,2012-11-20 12:27:41.98988
1853 1916,3,demo,383,aaa-test-repo,"",push_local:fb2f5ae9a806abe4cb03fe7b11d4ad21a836f7b6,2012-11-20 12:27:41.98988
1854 1917,3,demo,384,aaa-test-repo2,"",started_following_repo,2012-11-20 12:31:43.009679
1854 1917,3,demo,384,aaa-test-repo2,"",started_following_repo,2012-11-20 12:31:43.009679
1855 1918,3,demo,384,aaa-test-repo2,"",user_created_repo,2012-11-20 12:31:43.019015
1855 1918,3,demo,384,aaa-test-repo2,"",user_created_repo,2012-11-20 12:31:43.019015
1856 1919,3,demo,384,aaa-test-repo2,"",push_local:83a7be8f9d651912ee343067bd392678fbebe3e8,2012-11-20 12:32:34.336741
1856 1919,3,demo,384,aaa-test-repo2,"",push_local:83a7be8f9d651912ee343067bd392678fbebe3e8,2012-11-20 12:32:34.336741
1857 1920,3,demo,385,aaa-test-repo2-fork,"",started_following_repo,2012-11-20 12:58:25.715274
1857 1920,3,demo,385,aaa-test-repo2-fork,"",started_following_repo,2012-11-20 12:58:25.715274
1858 1921,3,demo,384,aaa-test-repo2,"",user_forked_repo:aaa-test-repo2-fork,2012-11-20 12:58:25.729374
1858 1921,3,demo,384,aaa-test-repo2,"",user_forked_repo:aaa-test-repo2-fork,2012-11-20 12:58:25.729374
1859 1922,3,demo,385,aaa-test-repo2-fork,"",user_created_fork:aaa-test-repo2-fork,2012-11-20 12:58:25.737204
1859 1922,3,demo,385,aaa-test-repo2-fork,"",user_created_fork:aaa-test-repo2-fork,2012-11-20 12:58:25.737204
1860 1923,3,demo,385,aaa-test-repo2-fork,"",push_local:af794c0c7cf39be92c6b59bb8b7871d313b1d248,2012-11-20 12:58:59.668087
1860 1923,3,demo,385,aaa-test-repo2-fork,"",push_local:af794c0c7cf39be92c6b59bb8b7871d313b1d248,2012-11-20 12:58:59.668087
1861 1924,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:74,2012-11-20 13:25:32.773937
1861 1924,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:74,2012-11-20 13:25:32.773937
1862 1925,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:74,2012-11-20 13:33:39.823854
1862 1925,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:74,2012-11-20 13:33:39.823854
1863 1926,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:74,2012-11-20 13:33:39.828583
1863 1926,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:74,2012-11-20 13:33:39.828583
1864 1927,3,demo,385,aaa-test-repo2-fork,"",push_local:67120aaf6ddd81cd2aabde6adc22e7ca90d15d12,2012-11-20 18:41:48.280705
1864 1927,3,demo,385,aaa-test-repo2-fork,"",push_local:67120aaf6ddd81cd2aabde6adc22e7ca90d15d12,2012-11-20 18:41:48.280705
1865 1928,3,demo,384,aaa-test-repo2,81.178.131.20,"push:af794c0c7cf39be92c6b59bb8b7871d313b1d248,67120aaf6ddd81cd2aabde6adc22e7ca90d15d12",2012-11-20 20:01:34.101349
1865 1928,3,demo,384,aaa-test-repo2,81.178.131.20,"push:af794c0c7cf39be92c6b59bb8b7871d313b1d248,67120aaf6ddd81cd2aabde6adc22e7ca90d15d12",2012-11-20 20:01:34.101349
1866 1929,3,demo,385,aaa-test-repo2-fork,"",push_local:5ece07f12c61645049e7d2d3d33797942b16cba5,2012-11-20 20:10:49.816215
1866 1929,3,demo,385,aaa-test-repo2-fork,"",push_local:5ece07f12c61645049e7d2d3d33797942b16cba5,2012-11-20 20:10:49.816215
1867 1930,3,demo,385,aaa-test-repo2-fork,"",push_local:fd8a6936e27e3c31684155790f78effb33e6cc5c,2012-11-20 20:24:06.305599
1867 1930,3,demo,385,aaa-test-repo2-fork,"",push_local:fd8a6936e27e3c31684155790f78effb33e6cc5c,2012-11-20 20:24:06.305599
1868 1931,3,demo,384,aaa-test-repo2,81.178.131.20,push:5ece07f12c61645049e7d2d3d33797942b16cba5,2012-11-20 20:49:00.180794
1868 1931,3,demo,384,aaa-test-repo2,81.178.131.20,push:5ece07f12c61645049e7d2d3d33797942b16cba5,2012-11-20 20:49:00.180794
1869 1932,3,demo,384,aaa-test-repo2,81.178.131.20,push:fd8a6936e27e3c31684155790f78effb33e6cc5c,2012-11-20 21:28:16.281326
1869 1932,3,demo,384,aaa-test-repo2,81.178.131.20,push:fd8a6936e27e3c31684155790f78effb33e6cc5c,2012-11-20 21:28:16.281326
1870 1933,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:75,2012-11-21 01:38:22.165876
1870 1933,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:75,2012-11-21 01:38:22.165876
1871 1934,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:75,2012-11-21 01:38:22.175975
1871 1934,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:75,2012-11-21 01:38:22.175975
1872 1935,3,demo,385,aaa-test-repo2-fork,"",push_local:586be5737b6b185d37ab249e028470417698b44d,2012-11-21 01:42:21.540009
1872 1935,3,demo,385,aaa-test-repo2-fork,"",push_local:586be5737b6b185d37ab249e028470417698b44d,2012-11-21 01:42:21.540009
1873 1936,3,demo,385,aaa-test-repo2-fork,"",push_local:b836457cf5b358555c26193e67770d56e2345f4c,2012-11-21 01:50:03.178941
1873 1936,3,demo,385,aaa-test-repo2-fork,"",push_local:b836457cf5b358555c26193e67770d56e2345f4c,2012-11-21 01:50:03.178941
1874 1937,3,demo,384,aaa-test-repo2,81.178.131.20,"push:586be5737b6b185d37ab249e028470417698b44d,b836457cf5b358555c26193e67770d56e2345f4c",2012-11-21 02:01:01.40853
1874 1937,3,demo,384,aaa-test-repo2,81.178.131.20,"push:586be5737b6b185d37ab249e028470417698b44d,b836457cf5b358555c26193e67770d56e2345f4c",2012-11-21 02:01:01.40853
1875 1938,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",push_local:ff712eae5a99bede2bf710d86f86b0b534fbf089,2012-11-21 02:09:50.150788
1875 1938,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",push_local:ff712eae5a99bede2bf710d86f86b0b534fbf089,2012-11-21 02:09:50.150788
1876 1939,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-21 08:36:43.456525
1876 1939,3,demo,68,aaa-project,"",user_commented_revision:b4bf1f77b1288a24eb395537319b4f3155cffa71,2012-11-21 08:36:43.456525
1877 1940,3,demo,384,aaa-test-repo2,"",user_commented_revision:b836457cf5b358555c26193e67770d56e2345f4c,2012-11-21 12:03:06.317362
1877 1940,3,demo,384,aaa-test-repo2,"",user_commented_revision:b836457cf5b358555c26193e67770d56e2345f4c,2012-11-21 12:03:06.317362
1878 1941,3,demo,385,aaa-test-repo2-fork,"",push_local:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 12:17:04.303085
1878 1941,3,demo,385,aaa-test-repo2-fork,"",push_local:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 12:17:04.303085
1879 1942,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 12:17:47.536221
1879 1942,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 12:17:47.536221
1880 1943,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-11-21 14:27:15.134067
1880 1943,3,demo,34,a-very-long-usper-loooong-name-that-is-to-long,"",user_commented_revision:f437e821a406d35b1e231c5a81e82853f8ed6436,2012-11-21 14:27:15.134067
1881 1944,3,demo,386,I-am-a-very-long-repository-name-fork,"",started_following_repo,2012-11-21 15:31:17.25368
1881 1944,3,demo,386,I-am-a-very-long-repository-name-fork,"",started_following_repo,2012-11-21 15:31:17.25368
1882 1945,3,demo,348,group/I-am-a-very-long-repository-name,"",user_forked_repo:I-am-a-very-long-repository-name-fork,2012-11-21 15:31:17.271794
1882 1945,3,demo,348,group/I-am-a-very-long-repository-name,"",user_forked_repo:I-am-a-very-long-repository-name-fork,2012-11-21 15:31:17.271794
1883 1946,3,demo,386,I-am-a-very-long-repository-name-fork,"",user_created_fork:I-am-a-very-long-repository-name-fork,2012-11-21 15:31:17.283533
1883 1946,3,demo,386,I-am-a-very-long-repository-name-fork,"",user_created_fork:I-am-a-very-long-repository-name-fork,2012-11-21 15:31:17.283533
1884 1947,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 16:35:17.484282
1884 1947,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:d38a759ba1f79489db44854c9ddf06986f7e2b72,2012-11-21 16:35:17.484282
1885 1948,3,demo,385,aaa-test-repo2-fork,"",push_local:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-21 16:35:50.796373
1885 1948,3,demo,385,aaa-test-repo2-fork,"",push_local:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-21 16:35:50.796373
1886 1949,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-21 16:36:25.797019
1886 1949,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-21 16:36:25.797019
1887 1950,2,admin,68,aaa-project,"",push_local:7db38281c68497cee8dc4510d77e03fbb4d6c395,2012-11-21 18:34:44.97296
1887 1950,2,admin,68,aaa-project,"",push_local:7db38281c68497cee8dc4510d77e03fbb4d6c395,2012-11-21 18:34:44.97296
1888 1951,2,admin,68,aaa-project,"",push_local:de5af01cc0f75ab84966b11806c343000eeeb5d8,2012-11-21 18:36:10.869973
1888 1951,2,admin,68,aaa-project,"",push_local:de5af01cc0f75ab84966b11806c343000eeeb5d8,2012-11-21 18:36:10.869973
1889 1952,3,demo,387,new-group-test-repos1,"",started_following_repo,2012-11-21 21:05:48.945007
1889 1952,3,demo,387,new-group-test-repos1,"",started_following_repo,2012-11-21 21:05:48.945007
1890 1953,3,demo,387,new-group-test-repos1,"",user_created_repo,2012-11-21 21:05:48.953815
1890 1953,3,demo,387,new-group-test-repos1,"",user_created_repo,2012-11-21 21:05:48.953815
1891 1954,3,demo,388,Logarithmic,"",started_following_repo,2012-11-22 11:30:39.744224
1891 1954,3,demo,388,Logarithmic,"",started_following_repo,2012-11-22 11:30:39.744224
1892 1955,3,demo,388,Logarithmic,"",user_created_repo,2012-11-22 11:30:39.761413
1892 1955,3,demo,388,Logarithmic,"",user_created_repo,2012-11-22 11:30:39.761413
1893 1956,3,demo,388,Logarithmic,"",push_local:72dd1a9ceecfcf9832e41dd66d355d5c63546b67,2012-11-22 11:35:30.523613
1893 1956,3,demo,388,Logarithmic,"",push_local:72dd1a9ceecfcf9832e41dd66d355d5c63546b67,2012-11-22 11:35:30.523613
1894 1957,3,demo,388,Logarithmic,"",push_local:fdb124c2a063a7ce15a1b3e42cdfa30a5bf19fcb,2012-11-22 11:52:07.237429
1894 1957,3,demo,388,Logarithmic,"",push_local:fdb124c2a063a7ce15a1b3e42cdfa30a5bf19fcb,2012-11-22 11:52:07.237429
1895 1958,364,hs_rcdemo,389,hsio_test,"",started_following_repo,2012-11-22 14:32:05.148189
1895 1958,364,hs_rcdemo,389,hsio_test,"",started_following_repo,2012-11-22 14:32:05.148189
1896 1959,364,hs_rcdemo,389,hsio_test,"",user_created_repo,2012-11-22 14:32:05.163464
1896 1959,364,hs_rcdemo,389,hsio_test,"",user_created_repo,2012-11-22 14:32:05.163464
1897 1960,364,hs_rcdemo,389,hsio_test,"",push_local:8777c89c909bfba8eaae07cf596cce85190d7789,2012-11-22 14:33:30.066876
1897 1960,364,hs_rcdemo,389,hsio_test,"",push_local:8777c89c909bfba8eaae07cf596cce85190d7789,2012-11-22 14:33:30.066876
1898 1961,364,hs_rcdemo,389,hsio_test,"",user_updated_repo,2012-11-22 14:45:19.518307
1898 1961,364,hs_rcdemo,389,hsio_test,"",user_updated_repo,2012-11-22 14:45:19.518307
1899 1962,3,demo,390,ycxs,"",started_following_repo,2012-11-23 08:00:34.880042
1899 1962,3,demo,390,ycxs,"",started_following_repo,2012-11-23 08:00:34.880042
1900 1963,3,demo,390,ycxs,"",user_created_repo,2012-11-23 08:00:34.889356
1900 1963,3,demo,390,ycxs,"",user_created_repo,2012-11-23 08:00:34.889356
1901 1964,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-11-23 22:54:06.842764
1901 1964,3,demo,110,django,"",user_commented_revision:129f1ac8484d63c2e61a44fb2a18dd17246c1c4d,2012-11-23 22:54:06.842764
1902 1965,3,demo,68,aaa-project,"",user_commented_revision:de5af01cc0f75ab84966b11806c343000eeeb5d8,2012-11-25 18:05:15.626452
1902 1965,3,demo,68,aaa-project,"",user_commented_revision:de5af01cc0f75ab84966b11806c343000eeeb5d8,2012-11-25 18:05:15.626452
1903 1966,373,roger,391,roger,"",started_following_repo,2012-11-27 10:19:17.098535
1903 1966,373,roger,391,roger,"",started_following_repo,2012-11-27 10:19:17.098535
1904 1967,373,roger,391,roger,"",user_created_repo,2012-11-27 10:19:17.110165
1904 1967,373,roger,391,roger,"",user_created_repo,2012-11-27 10:19:17.110165
1905 1968,373,roger,391,roger,195.67.17.194,push:3deefa3d90eb91fbfe7c7d97579842d26ffab526,2012-11-27 10:20:14.448706
1905 1968,373,roger,391,roger,195.67.17.194,push:3deefa3d90eb91fbfe7c7d97579842d26ffab526,2012-11-27 10:20:14.448706
1906 1969,373,roger,394,roger-fork,"",started_following_repo,2012-11-27 10:44:06.565014
1906 1969,373,roger,394,roger-fork,"",started_following_repo,2012-11-27 10:44:06.565014
1907 1970,373,roger,391,roger,"",user_forked_repo:roger-fork,2012-11-27 10:44:06.582941
1907 1970,373,roger,391,roger,"",user_forked_repo:roger-fork,2012-11-27 10:44:06.582941
1908 1971,373,roger,394,roger-fork,"",user_created_fork:roger-fork,2012-11-27 10:44:06.591697
1908 1971,373,roger,394,roger-fork,"",user_created_fork:roger-fork,2012-11-27 10:44:06.591697
1909 1972,373,roger,394,roger-fork,195.67.17.194,push:ef5703075e9bd3b498d0398be689c6ecc2aa68f2,2012-11-27 10:46:44.898629
1909 1972,373,roger,394,roger-fork,195.67.17.194,push:ef5703075e9bd3b498d0398be689c6ecc2aa68f2,2012-11-27 10:46:44.898629
1910 1973,373,roger,391,roger,"",user_commented_pull_request:77,2012-11-27 10:49:00.02305
1910 1973,373,roger,391,roger,"",user_commented_pull_request:77,2012-11-27 10:49:00.02305
1911 1974,373,roger,394,roger-fork,195.67.17.194,push:1f3690bd18da15796e2379ea2f82d510dbbfd634,2012-11-27 10:52:51.819376
1911 1974,373,roger,394,roger-fork,195.67.17.194,push:1f3690bd18da15796e2379ea2f82d510dbbfd634,2012-11-27 10:52:51.819376
1912 1975,373,roger,391,roger,"",user_commented_pull_request:78,2012-11-27 10:55:01.836362
1912 1975,373,roger,391,roger,"",user_commented_pull_request:78,2012-11-27 10:55:01.836362
1913 1976,373,roger,391,roger,"",user_closed_pull_request:78,2012-11-27 10:55:01.843519
1913 1976,373,roger,391,roger,"",user_closed_pull_request:78,2012-11-27 10:55:01.843519
1914 1977,373,roger,391,roger,"",user_commented_pull_request:77,2012-11-27 10:55:43.206231
1914 1977,373,roger,391,roger,"",user_commented_pull_request:77,2012-11-27 10:55:43.206231
1915 1978,373,roger,391,roger,"",user_updated_repo,2012-11-27 10:56:53.018675
1915 1978,373,roger,391,roger,"",user_updated_repo,2012-11-27 10:56:53.018675
1916 1979,373,roger,391,roger,"",user_updated_repo,2012-11-27 11:02:27.558462
1916 1979,373,roger,391,roger,"",user_updated_repo,2012-11-27 11:02:27.558462
1917 1980,373,roger,394,roger-fork,195.67.17.194,push:3a6d267941eeb0a8cd7be18d619d6fe370216f00,2012-11-27 11:04:37.480288
1917 1980,373,roger,394,roger-fork,195.67.17.194,push:3a6d267941eeb0a8cd7be18d619d6fe370216f00,2012-11-27 11:04:37.480288
1918 1981,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:05:56.858694
1918 1981,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:05:56.858694
1919 1982,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:06:02.182164
1919 1982,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:06:02.182164
1920 1983,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:06:38.109374
1920 1983,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:06:38.109374
1921 1984,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:07:34.474704
1921 1984,374,roger2,391,roger,"",user_commented_pull_request:79,2012-11-27 11:07:34.474704
1922 1985,374,roger2,391,roger,"",user_closed_pull_request:79,2012-11-27 11:07:34.485308
1922 1985,374,roger2,391,roger,"",user_closed_pull_request:79,2012-11-27 11:07:34.485308
1923 1986,373,roger,394,roger-fork,195.67.17.194,push:12cd31bebc666a85f8a0f0742093d5cd9ea585c4,2012-11-27 11:09:08.04061
1923 1986,373,roger,394,roger-fork,195.67.17.194,push:12cd31bebc666a85f8a0f0742093d5cd9ea585c4,2012-11-27 11:09:08.04061
1924 1987,373,roger,395,rogerfork2,"",started_following_repo,2012-11-27 11:11:04.332674
1924 1987,373,roger,395,rogerfork2,"",started_following_repo,2012-11-27 11:11:04.332674
1925 1988,373,roger,391,roger,"",user_forked_repo:rogerfork2,2012-11-27 11:11:04.348686
1925 1988,373,roger,391,roger,"",user_forked_repo:rogerfork2,2012-11-27 11:11:04.348686
1926 1989,373,roger,395,rogerfork2,"",user_created_fork:rogerfork2,2012-11-27 11:11:04.359388
1926 1989,373,roger,395,rogerfork2,"",user_created_fork:rogerfork2,2012-11-27 11:11:04.359388
1927 1990,373,roger,395,rogerfork2,195.67.17.194,"push:ef5703075e9bd3b498d0398be689c6ecc2aa68f2,1f3690bd18da15796e2379ea2f82d510dbbfd634,3a6d267941eeb0a8cd7be18d619d6fe370216f00,12cd31bebc666a85f8a0f0742093d5cd9ea585c4",2012-11-27 11:11:18.920484
1927 1990,373,roger,395,rogerfork2,195.67.17.194,"push:ef5703075e9bd3b498d0398be689c6ecc2aa68f2,1f3690bd18da15796e2379ea2f82d510dbbfd634,3a6d267941eeb0a8cd7be18d619d6fe370216f00,12cd31bebc666a85f8a0f0742093d5cd9ea585c4",2012-11-27 11:11:18.920484
1928 1991,373,roger,391,roger,"",user_commented_pull_request:80,2012-11-27 11:12:23.228709
1928 1991,373,roger,391,roger,"",user_commented_pull_request:80,2012-11-27 11:12:23.228709
1929 1992,373,roger,391,roger,"",user_commented_pull_request:80,2012-11-27 11:12:55.017541
1929 1992,373,roger,391,roger,"",user_commented_pull_request:80,2012-11-27 11:12:55.017541
1930 1993,373,roger,391,roger,"",user_closed_pull_request:80,2012-11-27 11:12:55.027814
1930 1993,373,roger,391,roger,"",user_closed_pull_request:80,2012-11-27 11:12:55.027814
1931 1994,3,demo,385,aaa-test-repo2-fork,"",push_local:872eeeb3a8a2783129bfd7d988323f5addac7ab1,2012-11-27 11:48:48.630984
1931 1994,3,demo,385,aaa-test-repo2-fork,"",push_local:872eeeb3a8a2783129bfd7d988323f5addac7ab1,2012-11-27 11:48:48.630984
1932 1995,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:76,2012-11-27 11:50:01.915064
1932 1995,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:76,2012-11-27 11:50:01.915064
1933 1996,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:76,2012-11-27 11:50:12.991796
1933 1996,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:76,2012-11-27 11:50:12.991796
1934 1997,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:76,2012-11-27 11:50:12.99591
1934 1997,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:76,2012-11-27 11:50:12.99591
1935 1998,3,demo,396,тестовый-сервер,"",started_following_repo,2012-11-28 07:53:39.536654
1935 1998,3,demo,396,тестовый-сервер,"",started_following_repo,2012-11-28 07:53:39.536654
1936 1999,3,demo,396,тестовый-сервер,"",user_created_repo,2012-11-28 07:53:39.550591
1936 1999,3,demo,396,тестовый-сервер,"",user_created_repo,2012-11-28 07:53:39.550591
1937 2000,3,demo,397,simple-dev-fork,"",started_following_repo,2012-11-28 09:13:25.051649
1937 2000,3,demo,397,simple-dev-fork,"",started_following_repo,2012-11-28 09:13:25.051649
1938 2001,3,demo,210,simple-dev,"",user_forked_repo:simple-dev-fork,2012-11-28 09:13:25.106104
1938 2001,3,demo,210,simple-dev,"",user_forked_repo:simple-dev-fork,2012-11-28 09:13:25.106104
1939 2002,3,demo,397,simple-dev-fork,"",user_created_fork:simple-dev-fork,2012-11-28 09:13:25.114908
1939 2002,3,demo,397,simple-dev-fork,"",user_created_fork:simple-dev-fork,2012-11-28 09:13:25.114908
1940 2003,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-28 12:24:53.581825
1940 2003,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:96abb74e8e96a81a7dc5d472c70158da5318a623,2012-11-28 12:24:53.581825
1941 2004,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:872eeeb3a8a2783129bfd7d988323f5addac7ab1,2012-11-28 12:25:16.961119
1941 2004,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:872eeeb3a8a2783129bfd7d988323f5addac7ab1,2012-11-28 12:25:16.961119
1942 2005,3,demo,398,aaa-project-fork-fork,"",started_following_repo,2012-11-29 14:08:09.275983
1942 2005,3,demo,398,aaa-project-fork-fork,"",started_following_repo,2012-11-29 14:08:09.275983
1943 2006,3,demo,68,aaa-project,"",user_forked_repo:aaa-project-fork-fork,2012-11-29 14:08:09.413733
1943 2006,3,demo,68,aaa-project,"",user_forked_repo:aaa-project-fork-fork,2012-11-29 14:08:09.413733
1944 2007,3,demo,398,aaa-project-fork-fork,"",user_created_fork:aaa-project-fork-fork,2012-11-29 14:08:09.427854
1944 2007,3,demo,398,aaa-project-fork-fork,"",user_created_fork:aaa-project-fork-fork,2012-11-29 14:08:09.427854
1945 2008,3,demo,68,aaa-project,"",user_updated_repo,2012-11-29 14:09:10.934065
1945 2008,3,demo,68,aaa-project,"",user_updated_repo,2012-11-29 14:09:10.934065
1946 2009,3,demo,68,aaa-project,"",user_updated_repo,2012-11-29 14:09:24.706033
1946 2009,3,demo,68,aaa-project,"",user_updated_repo,2012-11-29 14:09:24.706033
1947 2010,3,demo,399,tra,"",started_following_repo,2012-11-29 14:11:48.839858
1947 2010,3,demo,399,tra,"",started_following_repo,2012-11-29 14:11:48.839858
1948 2011,3,demo,399,tra,"",user_created_repo,2012-11-29 14:11:48.85278
1948 2011,3,demo,399,tra,"",user_created_repo,2012-11-29 14:11:48.85278
1949 2012,3,demo,42,foo,"",user_commented_revision:1b9a14ca778d48ebef5643f7aa2ce142f3a27617,2012-11-29 20:05:08.767523
1949 2012,3,demo,42,foo,"",user_commented_revision:1b9a14ca778d48ebef5643f7aa2ce142f3a27617,2012-11-29 20:05:08.767523
1950 2013,3,demo,42,foo,"",push_local:bb4dab01c0bd4241b903a4dc84a79c70a01b0f6b,2012-11-29 20:06:18.477822
1950 2013,3,demo,42,foo,"",push_local:bb4dab01c0bd4241b903a4dc84a79c70a01b0f6b,2012-11-29 20:06:18.477822
1951 2014,1,default,159,group/Test-for-code-review,"",push_local:eaca071ebe45eaf5fc6631b15d7cf079a0d5aaf1,2012-11-29 23:52:50.718898
1951 2014,1,default,159,group/Test-for-code-review,"",push_local:eaca071ebe45eaf5fc6631b15d7cf079a0d5aaf1,2012-11-29 23:52:50.718898
1952 2015,375,paul,400,hophop,"",started_following_repo,2012-11-30 08:50:31.403305
1952 2015,375,paul,400,hophop,"",started_following_repo,2012-11-30 08:50:31.403305
1953 2016,375,paul,400,hophop,"",user_created_repo,2012-11-30 08:50:31.416463
1953 2016,375,paul,400,hophop,"",user_created_repo,2012-11-30 08:50:31.416463
1954 2017,375,paul,400,hophop,"",push_local:558613aaa69def5e130b8f9583de37f911a80dd8,2012-11-30 08:51:37.956737
1954 2017,375,paul,400,hophop,"",push_local:558613aaa69def5e130b8f9583de37f911a80dd8,2012-11-30 08:51:37.956737
1955 2018,375,paul,401,flepflep,"",started_following_repo,2012-11-30 08:52:56.146141
1955 2018,375,paul,401,flepflep,"",started_following_repo,2012-11-30 08:52:56.146141
1956 2019,375,paul,400,hophop,"",user_forked_repo:flepflep,2012-11-30 08:52:56.162784
1956 2019,375,paul,400,hophop,"",user_forked_repo:flepflep,2012-11-30 08:52:56.162784
1957 2020,375,paul,401,flepflep,"",user_created_fork:flepflep,2012-11-30 08:52:56.171068
1957 2020,375,paul,401,flepflep,"",user_created_fork:flepflep,2012-11-30 08:52:56.171068
1958 2021,375,paul,400,hophop,213.154.235.68,push:0c64f45ec8f43a5267d593a2af65c3b9965c312c,2012-11-30 08:54:23.238053
1958 2021,375,paul,400,hophop,213.154.235.68,push:0c64f45ec8f43a5267d593a2af65c3b9965c312c,2012-11-30 08:54:23.238053
1959 2022,376,mrntest,402,mrntest,"",started_following_repo,2012-11-30 10:10:14.463671
1959 2022,376,mrntest,402,mrntest,"",started_following_repo,2012-11-30 10:10:14.463671
1960 2023,376,mrntest,402,mrntest,"",user_created_repo,2012-11-30 10:10:14.475507
1960 2023,376,mrntest,402,mrntest,"",user_created_repo,2012-11-30 10:10:14.475507
1961 2024,1,default,159,group/Test-for-code-review,"",push_local:da1270d35961130d6fe12ba4777f412dabb533f7,2012-11-30 18:39:23.68212
1961 2024,1,default,159,group/Test-for-code-review,"",push_local:da1270d35961130d6fe12ba4777f412dabb533f7,2012-11-30 18:39:23.68212
1962 2025,3,demo,177,blah,"",user_updated_repo,2012-11-30 21:43:04.925873
1962 2025,3,demo,177,blah,"",user_updated_repo,2012-11-30 21:43:04.925873
1963 2026,1,default,159,group/Test-for-code-review,"",push_local:3bfcf2015dcc85f3334a4439099b1f4fe2ab87cc,2012-12-01 04:40:25.326381
1963 2026,1,default,159,group/Test-for-code-review,"",push_local:3bfcf2015dcc85f3334a4439099b1f4fe2ab87cc,2012-12-01 04:40:25.326381
1964 2027,3,demo,385,aaa-test-repo2-fork,"",push_local:8caf16b59f0ac54d002daeaf54208319a055829a,2012-12-01 12:40:27.987379
1964 2027,3,demo,385,aaa-test-repo2-fork,"",push_local:8caf16b59f0ac54d002daeaf54208319a055829a,2012-12-01 12:40:27.987379
1965 2028,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:8caf16b59f0ac54d002daeaf54208319a055829a,2012-12-01 12:40:35.315142
1965 2028,3,demo,385,aaa-test-repo2-fork,"",user_commented_revision:8caf16b59f0ac54d002daeaf54208319a055829a,2012-12-01 12:40:35.315142
1966 2029,3,demo,403,aaa-test-repo2-fork1,"",started_following_repo,2012-12-01 12:43:30.698526
1966 2029,3,demo,403,aaa-test-repo2-fork1,"",started_following_repo,2012-12-01 12:43:30.698526
1967 2030,3,demo,384,aaa-test-repo2,"",user_forked_repo:aaa-test-repo2-fork1,2012-12-01 12:43:30.7817
1967 2030,3,demo,384,aaa-test-repo2,"",user_forked_repo:aaa-test-repo2-fork1,2012-12-01 12:43:30.7817
1968 2031,3,demo,403,aaa-test-repo2-fork1,"",user_created_fork:aaa-test-repo2-fork1,2012-12-01 12:43:30.789849
1968 2031,3,demo,403,aaa-test-repo2-fork1,"",user_created_fork:aaa-test-repo2-fork1,2012-12-01 12:43:30.789849
1969 2032,3,demo,403,aaa-test-repo2-fork1,"",push_local:7d46cab71f090b82e40f82aa164a237bffae8ca8,2012-12-01 12:43:54.847211
1969 2032,3,demo,403,aaa-test-repo2-fork1,"",push_local:7d46cab71f090b82e40f82aa164a237bffae8ca8,2012-12-01 12:43:54.847211
1970 2033,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:81,2012-12-01 12:45:15.004235
1970 2033,3,demo,384,aaa-test-repo2,"",user_commented_pull_request:81,2012-12-01 12:45:15.004235
1971 2034,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:81,2012-12-01 12:45:15.01175
1971 2034,3,demo,384,aaa-test-repo2,"",user_closed_pull_request:81,2012-12-01 12:45:15.01175
1972 2035,1,default,159,group/Test-for-code-review,"",push_local:88f2b300127f7249d6b2ac03d4e368cd7a043073,2012-12-02 06:49:39.201427
1972 2035,1,default,159,group/Test-for-code-review,"",push_local:88f2b300127f7249d6b2ac03d4e368cd7a043073,2012-12-02 06:49:39.201427
1973 2036,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:54:40.845102
1973 2036,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:54:40.845102
1974 2037,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:54:52.733614
1974 2037,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:54:52.733614
1975 2038,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:55:06.032348
1975 2038,380,han,42,foo,"",user_commented_revision:ca953e8c5c1ada44e9a8f945a0a6999d2f44310d,2012-12-03 05:55:06.032348
1976 2039,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:55:57.293424
1976 2039,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:55:57.293424
1977 2040,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:56:05.503132
1977 2040,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:56:05.503132
1978 2041,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:56:11.78452
1978 2041,380,han,184,fork-aaa-project,"",user_commented_revision:e3fef0be8dc20eb1fa68fc45292d9d66de1cc67f,2012-12-03 05:56:11.78452
1979 2042,381,tmilos,265,mercurial-trunk,"",user_commented_revision:b3f0f9a39c4e1d0250048cd803ab03542d6f140a,2012-12-03 08:18:24.126434
1979 2042,381,tmilos,265,mercurial-trunk,"",user_commented_revision:b3f0f9a39c4e1d0250048cd803ab03542d6f140a,2012-12-03 08:18:24.126434
1980 2043,381,tmilos,265,mercurial-trunk,"",user_commented_revision:b3f0f9a39c4e1d0250048cd803ab03542d6f140a,2012-12-03 08:18:53.783535
1980 2043,381,tmilos,265,mercurial-trunk,"",user_commented_revision:b3f0f9a39c4e1d0250048cd803ab03542d6f140a,2012-12-03 08:18:53.783535
1981 2044,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-12-03 13:51:26.584571
1981 2044,3,demo,68,aaa-project,"",user_commented_revision:0c33fa58efc5a5541d8d3f1a3d3b77367e3d94f5,2012-12-03 13:51:26.584571
1982 2045,3,demo,384,aaa-test-repo2,"",user_updated_repo,2012-12-03 13:59:51.134475
1982 2045,3,demo,384,aaa-test-repo2,"",user_updated_repo,2012-12-03 13:59:51.134475
1983 2046,3,demo,68,aaa-project,"",user_updated_repo,2012-12-03 14:12:42.587904
1983 2046,3,demo,68,aaa-project,"",user_updated_repo,2012-12-03 14:12:42.587904
1984 2047,3,demo,404,Test-Repo-5,"",started_following_repo,2012-12-03 19:58:28.17924
1984 2047,3,demo,404,Test-Repo-5,"",started_following_repo,2012-12-03 19:58:28.17924
1985 2048,3,demo,404,Test-Repo-5,"",admin_created_repo,2012-12-03 19:58:28.215537
1985 2048,3,demo,404,Test-Repo-5,"",admin_created_repo,2012-12-03 19:58:28.215537
1986 2049,3,demo,382,aaa-repo-fork,"",push_local:d49133c59d2b74bf5754fab639520fe0f15f660b,2012-12-03 23:45:38.954154
1986 2049,3,demo,382,aaa-repo-fork,"",push_local:d49133c59d2b74bf5754fab639520fe0f15f660b,2012-12-03 23:45:38.954154
1987 2050,5,natosha.bard,405,test-largefiles-push,"",started_following_repo,2012-12-04 14:15:02.062567
1987 2050,5,natosha.bard,405,test-largefiles-push,"",started_following_repo,2012-12-04 14:15:02.062567
1988 2051,5,natosha.bard,405,test-largefiles-push,"",admin_created_repo,2012-12-04 14:15:02.07345
1988 2051,5,natosha.bard,405,test-largefiles-push,"",admin_created_repo,2012-12-04 14:15:02.07345
1989 2052,5,natosha.bard,405,test-largefiles-push,62.116.219.97,push:3055a4c8ccb9b695a7973aa25aa118b0dde122e4,2012-12-04 14:15:19.101956
1989 2052,5,natosha.bard,405,test-largefiles-push,62.116.219.97,push:3055a4c8ccb9b695a7973aa25aa118b0dde122e4,2012-12-04 14:15:19.101956
1990 2053,5,natosha.bard,405,test-largefiles-push,62.116.219.97,push:88adc5944c74488164ae575511429ed582a72e17,2012-12-04 14:40:10.373812
1990 2053,5,natosha.bard,405,test-largefiles-push,62.116.219.97,push:88adc5944c74488164ae575511429ed582a72e17,2012-12-04 14:40:10.373812
1991 2054,384,test1234,406,test123456,"",started_following_repo,2012-12-04 16:07:07.967514
1991 2054,384,test1234,406,test123456,"",started_following_repo,2012-12-04 16:07:07.967514
1992 2055,384,test1234,406,test123456,"",admin_created_repo,2012-12-04 16:07:07.987393
1992 2055,384,test1234,406,test123456,"",admin_created_repo,2012-12-04 16:07:07.987393
1993 2058,5,natosha.bard,408,test-repo-natosha,"",started_following_repo,2012-12-04 20:41:39.763055
1993 2058,5,natosha.bard,408,test-repo-natosha,"",started_following_repo,2012-12-04 20:41:39.763055
1994 2059,5,natosha.bard,408,test-repo-natosha,"",admin_created_repo,2012-12-04 20:41:39.775062
1994 2059,5,natosha.bard,408,test-repo-natosha,"",admin_created_repo,2012-12-04 20:41:39.775062
1995 2056,5,natosha.bard,,hg,"",started_following_repo,2012-12-04 20:40:00.327829
1995 2056,5,natosha.bard,,hg,"",started_following_repo,2012-12-04 20:40:00.327829
1996 2057,5,natosha.bard,,hg,"",admin_created_repo,2012-12-04 20:40:00.342796
1996 2057,5,natosha.bard,,hg,"",admin_created_repo,2012-12-04 20:40:00.342796
1997 2060,5,natosha.bard,,hg,"",user_deleted_repo,2012-12-04 20:42:03.236535
1997 2060,5,natosha.bard,,hg,"",user_deleted_repo,2012-12-04 20:42:03.236535
1998 2062,5,natosha.bard,409,test-repo-natosha-fork,"",started_following_repo,2012-12-04 20:43:25.363199
1998 2062,5,natosha.bard,409,test-repo-natosha-fork,"",started_following_repo,2012-12-04 20:43:25.363199
1999 2063,5,natosha.bard,408,test-repo-natosha,"",user_forked_repo:test-repo-natosha-fork,2012-12-04 20:43:25.413303
1999 2063,5,natosha.bard,408,test-repo-natosha,"",user_forked_repo:test-repo-natosha-fork,2012-12-04 20:43:25.413303
2000 2064,5,natosha.bard,409,test-repo-natosha-fork,"",user_created_fork:test-repo-natosha-fork,2012-12-04 20:43:25.421503
2000 2064,5,natosha.bard,409,test-repo-natosha-fork,"",user_created_fork:test-repo-natosha-fork,2012-12-04 20:43:25.421503
2001 2065,5,natosha.bard,409,test-repo-natosha-fork,62.116.219.97,"push:132a288f32d5b70a9170e504028c693cfffc5c39,fac6d36d04cb1838cd10bdcecd487567787fb853,e83c482c6c5fd60f14d1a5f5cf9b4f7b2a2eb3cb,ce2c709a8e908747376a3fda6059c1f81de321e7,45bd0cd7ca04f8cda0a61cddded8838dd312675a,35ba170c0f82dba18f0207ef4bd93216e6de8bbf,407209261f6373b4b3f35e343d1498b63263d38e,6f79c32c0bdfb304b984b5e6ba318cc63032cfa4,54cedee86e5126188b0dcfbd7015bcdca7f6c2e2,b0affcb67cba58db03ca3e443105fbaabd1bc88a,4c29668ca316422891e28c55bd794eee52823554,6180dcb29ec531c5d7457005ef142ea304ef49d8,2c63896783e31908f18088a7e9c583de6ec530bf,b3ec0b5fd7771b401392a83f47e0c2360e7f6d90,e689b0d9154605b8b04989c4fdd36e76d6cf26b8,b74361cf7c0ad6930a865e7eada13e2d2d6ed380,f94ead93406764ffd0c3febfc2ea70d36a2a28bb,848345a8d6adaa58704baecbb7567b275df3cc9d,0c10cf8191469e7c3c8844922e17e71a176cb7cb",2012-12-04 20:44:13.658236
2001 2065,5,natosha.bard,409,test-repo-natosha-fork,62.116.219.97,"push:132a288f32d5b70a9170e504028c693cfffc5c39,fac6d36d04cb1838cd10bdcecd487567787fb853,e83c482c6c5fd60f14d1a5f5cf9b4f7b2a2eb3cb,ce2c709a8e908747376a3fda6059c1f81de321e7,45bd0cd7ca04f8cda0a61cddded8838dd312675a,35ba170c0f82dba18f0207ef4bd93216e6de8bbf,407209261f6373b4b3f35e343d1498b63263d38e,6f79c32c0bdfb304b984b5e6ba318cc63032cfa4,54cedee86e5126188b0dcfbd7015bcdca7f6c2e2,b0affcb67cba58db03ca3e443105fbaabd1bc88a,4c29668ca316422891e28c55bd794eee52823554,6180dcb29ec531c5d7457005ef142ea304ef49d8,2c63896783e31908f18088a7e9c583de6ec530bf,b3ec0b5fd7771b401392a83f47e0c2360e7f6d90,e689b0d9154605b8b04989c4fdd36e76d6cf26b8,b74361cf7c0ad6930a865e7eada13e2d2d6ed380,f94ead93406764ffd0c3febfc2ea70d36a2a28bb,848345a8d6adaa58704baecbb7567b275df3cc9d,0c10cf8191469e7c3c8844922e17e71a176cb7cb",2012-12-04 20:44:13.658236
2002 2066,1,default,159,group/Test-for-code-review,"",push_local:b77f1d54f1d18c22e497f1d9d502e0d540506d21,2012-12-05 00:22:33.617864
2002 2066,1,default,159,group/Test-for-code-review,"",push_local:b77f1d54f1d18c22e497f1d9d502e0d540506d21,2012-12-05 00:22:33.617864
2003 2067,3,demo,410,aaa-project-fork-fork-fork-fork-fork-blah,"",started_following_repo,2012-12-05 10:07:05.333082
2003 2067,3,demo,410,aaa-project-fork-fork-fork-fork-fork-blah,"",started_following_repo,2012-12-05 10:07:05.333082
2004 2068,3,demo,398,aaa-project-fork-fork,"",user_forked_repo:aaa-project-fork-fork-fork-fork-fork-blah,2012-12-05 10:07:05.47808
2004 2068,3,demo,398,aaa-project-fork-fork,"",user_forked_repo:aaa-project-fork-fork-fork-fork-fork-blah,2012-12-05 10:07:05.47808
2005 2069,3,demo,410,aaa-project-fork-fork-fork-fork-fork-blah,"",user_created_fork:aaa-project-fork-fork-fork-fork-fork-blah,2012-12-05 10:07:05.487482
2005 2069,3,demo,410,aaa-project-fork-fork-fork-fork-fork-blah,"",user_created_fork:aaa-project-fork-fork-fork-fork-fork-blah,2012-12-05 10:07:05.487482
2006 2070,387,ssssss,411,sss-test,"",started_following_repo,2012-12-05 13:33:27.008097
2006 2070,387,ssssss,411,sss-test,"",started_following_repo,2012-12-05 13:33:27.008097
2007 2071,387,ssssss,411,sss-test,"",admin_created_repo,2012-12-05 13:33:27.018183
2007 2071,387,ssssss,411,sss-test,"",admin_created_repo,2012-12-05 13:33:27.018183
2008 2072,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:37:35.771478
2008 2072,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:37:35.771478
2009 2073,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:00.979078
2009 2073,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:00.979078
2010 2074,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:05.497667
2010 2074,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:05.497667
2011 2075,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:12.513828
2011 2075,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 13:38:12.513828
2012 2076,387,ssssss,173,code-review-dev,"",started_following_repo,2012-12-05 13:46:51.940453
2012 2076,387,ssssss,173,code-review-dev,"",started_following_repo,2012-12-05 13:46:51.940453
2013 2077,387,ssssss,173,code-review-dev,"",stopped_following_repo,2012-12-05 13:46:54.738489
2013 2077,387,ssssss,173,code-review-dev,"",stopped_following_repo,2012-12-05 13:46:54.738489
2014 2078,387,ssssss,411,sss-test,109.195.177.171,push:7d42587da267871709bc82e462018b8b7d66a4a7,2012-12-05 13:59:09.546916
2014 2078,387,ssssss,411,sss-test,109.195.177.171,push:7d42587da267871709bc82e462018b8b7d66a4a7,2012-12-05 13:59:09.546916
2015 2079,387,ssssss,411,sss-test,109.195.177.171,push:bb869421c7c8f88590536d559cebd3ee5e9c3aa7,2012-12-05 14:00:27.04582
2015 2079,387,ssssss,411,sss-test,109.195.177.171,push:bb869421c7c8f88590536d559cebd3ee5e9c3aa7,2012-12-05 14:00:27.04582
2016 2080,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:03:48.47955
2016 2080,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:03:48.47955
2017 2081,389,wwwwww,412,sss-test-fork,"",started_following_repo,2012-12-05 14:05:13.355226
2017 2081,389,wwwwww,412,sss-test-fork,"",started_following_repo,2012-12-05 14:05:13.355226
2018 2082,389,wwwwww,411,sss-test,"",user_forked_repo:sss-test-fork,2012-12-05 14:05:13.663527
2018 2082,389,wwwwww,411,sss-test,"",user_forked_repo:sss-test-fork,2012-12-05 14:05:13.663527
2019 2083,389,wwwwww,412,sss-test-fork,"",user_created_fork:sss-test-fork,2012-12-05 14:05:13.678367
2019 2083,389,wwwwww,412,sss-test-fork,"",user_created_fork:sss-test-fork,2012-12-05 14:05:13.678367
2020 2084,389,wwwwww,412,sss-test-fork,"",user_updated_repo,2012-12-05 14:05:56.566769
2020 2084,389,wwwwww,412,sss-test-fork,"",user_updated_repo,2012-12-05 14:05:56.566769
2021 2085,389,wwwwww,412,sss-test-fork,109.195.177.171,push:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:07:21.399133
2021 2085,389,wwwwww,412,sss-test-fork,109.195.177.171,push:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:07:21.399133
2022 2086,389,wwwwww,412,sss-test-fork,"",user_commented_revision:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:16:56.716099
2022 2086,389,wwwwww,412,sss-test-fork,"",user_commented_revision:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:16:56.716099
2023 2087,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:20:41.385001
2023 2087,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:20:41.385001
2024 2088,389,wwwwww,411,sss-test,109.195.177.171,push:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:20:54.878385
2024 2088,389,wwwwww,411,sss-test,109.195.177.171,push:20bd46e65a056aef107cc060d16c97b1ef2cc211,2012-12-05 14:20:54.878385
2025 2089,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:21:15.330812
2025 2089,387,ssssss,411,sss-test,"",user_updated_repo,2012-12-05 14:21:15.330812
2026 2090,389,wwwwww,412,sss-test-fork,109.195.177.171,push:1203172be2e12aa31ec40ba4d07b75a3e17bd63f,2012-12-05 14:23:18.297453
2026 2090,389,wwwwww,412,sss-test-fork,109.195.177.171,push:1203172be2e12aa31ec40ba4d07b75a3e17bd63f,2012-12-05 14:23:18.297453
2027 2091,389,wwwwww,412,sss-test-fork,"",user_commented_revision:1203172be2e12aa31ec40ba4d07b75a3e17bd63f,2012-12-05 14:23:34.233486
2027 2091,389,wwwwww,412,sss-test-fork,"",user_commented_revision:1203172be2e12aa31ec40ba4d07b75a3e17bd63f,2012-12-05 14:23:34.233486
2028 2092,5,natosha.bard,413,natosha-repo1,"",started_following_repo,2012-12-05 16:46:55.328513
2028 2092,5,natosha.bard,413,natosha-repo1,"",started_following_repo,2012-12-05 16:46:55.328513
2029 2093,5,natosha.bard,413,natosha-repo1,"",admin_created_repo,2012-12-05 16:46:55.342146
2029 2093,5,natosha.bard,413,natosha-repo1,"",admin_created_repo,2012-12-05 16:46:55.342146
2030 2094,5,natosha.bard,413,natosha-repo1,62.116.219.97,"push:6fbe2a2357168359aacbc524f4acd805dff72327,5787c391ba8f9d67b4e96f47d71adab79b693a30",2012-12-05 16:47:09.181828
2030 2094,5,natosha.bard,413,natosha-repo1,62.116.219.97,"push:6fbe2a2357168359aacbc524f4acd805dff72327,5787c391ba8f9d67b4e96f47d71adab79b693a30",2012-12-05 16:47:09.181828
2031 2095,5,natosha.bard,414,natosha-repo1-fork,"",started_following_repo,2012-12-05 16:47:24.080447
2031 2095,5,natosha.bard,414,natosha-repo1-fork,"",started_following_repo,2012-12-05 16:47:24.080447
2032 2096,5,natosha.bard,413,natosha-repo1,"",user_forked_repo:natosha-repo1-fork,2012-12-05 16:47:24.101525
2032 2096,5,natosha.bard,413,natosha-repo1,"",user_forked_repo:natosha-repo1-fork,2012-12-05 16:47:24.101525
2033 2097,5,natosha.bard,414,natosha-repo1-fork,"",user_created_fork:natosha-repo1-fork,2012-12-05 16:47:24.113866
2033 2097,5,natosha.bard,414,natosha-repo1-fork,"",user_created_fork:natosha-repo1-fork,2012-12-05 16:47:24.113866
2034 2098,5,natosha.bard,414,natosha-repo1-fork,62.116.219.97,"push:a25c825fd81d069596d614efcf92505aed46227a,ac513595518923aca8b39f0a1c33c4c6e0f9d83a,d395e22e8e16373a1fffbe66b322581d69a7db17",2012-12-05 16:47:44.701535
2034 2098,5,natosha.bard,414,natosha-repo1-fork,62.116.219.97,"push:a25c825fd81d069596d614efcf92505aed46227a,ac513595518923aca8b39f0a1c33c4c6e0f9d83a,d395e22e8e16373a1fffbe66b322581d69a7db17",2012-12-05 16:47:44.701535
2035 2099,2,admin,38,code-review-test,"",user_commented_pull_request:73,2012-12-05 17:23:18.059481
2035 2099,2,admin,38,code-review-test,"",user_commented_pull_request:73,2012-12-05 17:23:18.059481
@@ -1,150 +1,150 b''
1 from __future__ import with_statement
1 from __future__ import with_statement
2 import os
2 import os
3 import csv
3 import csv
4 import datetime
4 import datetime
5 from kallithea.tests import *
5 from kallithea.tests import *
6 from kallithea.model.db import UserLog
6 from kallithea.model.db import UserLog
7 from kallithea.model.meta import Session
7 from kallithea.model.meta import Session
8 from kallithea.lib.utils2 import safe_unicode
8 from kallithea.lib.utils2 import safe_unicode
9
9
10 dn = os.path.dirname
10 dn = os.path.dirname
11 FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures')
11 FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures')
12
12
13
13
14 class TestAdminController(TestController):
14 class TestAdminController(TestController):
15
15
16 @classmethod
16 @classmethod
17 def setup_class(cls):
17 def setup_class(cls):
18 UserLog.query().delete()
18 UserLog.query().delete()
19 Session().commit()
19 Session().commit()
20
20
21 def strptime(val):
21 def strptime(val):
22 fmt = '%Y-%m-%d %H:%M:%S'
22 fmt = '%Y-%m-%d %H:%M:%S'
23 if '.' not in val:
23 if '.' not in val:
24 return datetime.datetime.strptime(val, fmt)
24 return datetime.datetime.strptime(val, fmt)
25
25
26 nofrag, frag = val.split(".")
26 nofrag, frag = val.split(".")
27 date = datetime.datetime.strptime(nofrag, fmt)
27 date = datetime.datetime.strptime(nofrag, fmt)
28
28
29 frag = frag[:6] # truncate to microseconds
29 frag = frag[:6] # truncate to microseconds
30 frag += (6 - len(frag)) * '0' # add 0s
30 frag += (6 - len(frag)) * '0' # add 0s
31 return date.replace(microsecond=int(frag))
31 return date.replace(microsecond=int(frag))
32
32
33 with open(os.path.join(FIXTURES, 'journal_dump.csv')) as f:
33 with open(os.path.join(FIXTURES, 'journal_dump.csv')) as f:
34 for row in csv.DictReader(f):
34 for row in csv.DictReader(f):
35 ul = UserLog()
35 ul = UserLog()
36 for k, v in row.iteritems():
36 for k, v in row.iteritems():
37 v = safe_unicode(v)
37 v = safe_unicode(v)
38 if k == 'action_date':
38 if k == 'action_date':
39 v = strptime(v)
39 v = strptime(v)
40 if k in ['user_id', 'repository_id']:
40 if k in ['user_id', 'repository_id']:
41 # nullable due to FK problems
41 # nullable due to FK problems
42 v = None
42 v = None
43 setattr(ul, k, v)
43 setattr(ul, k, v)
44 Session().add(ul)
44 Session().add(ul)
45 Session().commit()
45 Session().commit()
46
46
47 @classmethod
47 @classmethod
48 def teardown_class(cls):
48 def teardown_class(cls):
49 UserLog.query().delete()
49 UserLog.query().delete()
50 Session().commit()
50 Session().commit()
51
51
52 def test_index(self):
52 def test_index(self):
53 self.log_user()
53 self.log_user()
54 response = self.app.get(url(controller='admin/admin', action='index'))
54 response = self.app.get(url(controller='admin/admin', action='index'))
55 response.mustcontain('Admin journal')
55 response.mustcontain('Admin journal')
56
56
57 def test_filter_all_entries(self):
57 def test_filter_all_entries(self):
58 self.log_user()
58 self.log_user()
59 response = self.app.get(url(controller='admin/admin', action='index',))
59 response = self.app.get(url(controller='admin/admin', action='index',))
60 response.mustcontain('2034 entries')
60 response.mustcontain('2034 entries')
61
61
62 def test_filter_journal_filter_exact_match_on_repository(self):
62 def test_filter_journal_filter_exact_match_on_repository(self):
63 self.log_user()
63 self.log_user()
64 response = self.app.get(url(controller='admin/admin', action='index',
64 response = self.app.get(url(controller='admin/admin', action='index',
65 filter='repository:rhodecode'))
65 filter='repository:xxx'))
66 response.mustcontain('3 entries')
66 response.mustcontain('3 entries')
67
67
68 def test_filter_journal_filter_exact_match_on_repository_CamelCase(self):
68 def test_filter_journal_filter_exact_match_on_repository_CamelCase(self):
69 self.log_user()
69 self.log_user()
70 response = self.app.get(url(controller='admin/admin', action='index',
70 response = self.app.get(url(controller='admin/admin', action='index',
71 filter='repository:RhodeCode'))
71 filter='repository:XxX'))
72 response.mustcontain('3 entries')
72 response.mustcontain('3 entries')
73
73
74 def test_filter_journal_filter_wildcard_on_repository(self):
74 def test_filter_journal_filter_wildcard_on_repository(self):
75 self.log_user()
75 self.log_user()
76 response = self.app.get(url(controller='admin/admin', action='index',
76 response = self.app.get(url(controller='admin/admin', action='index',
77 filter='repository:*test*'))
77 filter='repository:*test*'))
78 response.mustcontain('862 entries')
78 response.mustcontain('862 entries')
79
79
80 def test_filter_journal_filter_prefix_on_repository(self):
80 def test_filter_journal_filter_prefix_on_repository(self):
81 self.log_user()
81 self.log_user()
82 response = self.app.get(url(controller='admin/admin', action='index',
82 response = self.app.get(url(controller='admin/admin', action='index',
83 filter='repository:test*'))
83 filter='repository:test*'))
84 response.mustcontain('257 entries')
84 response.mustcontain('257 entries')
85
85
86 def test_filter_journal_filter_prefix_on_repository_CamelCase(self):
86 def test_filter_journal_filter_prefix_on_repository_CamelCase(self):
87 self.log_user()
87 self.log_user()
88 response = self.app.get(url(controller='admin/admin', action='index',
88 response = self.app.get(url(controller='admin/admin', action='index',
89 filter='repository:Test*'))
89 filter='repository:Test*'))
90 response.mustcontain('257 entries')
90 response.mustcontain('257 entries')
91
91
92 def test_filter_journal_filter_prefix_on_repository_and_user(self):
92 def test_filter_journal_filter_prefix_on_repository_and_user(self):
93 self.log_user()
93 self.log_user()
94 response = self.app.get(url(controller='admin/admin', action='index',
94 response = self.app.get(url(controller='admin/admin', action='index',
95 filter='repository:test* AND username:demo'))
95 filter='repository:test* AND username:demo'))
96 response.mustcontain('130 entries')
96 response.mustcontain('130 entries')
97
97
98 def test_filter_journal_filter_prefix_on_repository_or_other_repo(self):
98 def test_filter_journal_filter_prefix_on_repository_or_other_repo(self):
99 self.log_user()
99 self.log_user()
100 response = self.app.get(url(controller='admin/admin', action='index',
100 response = self.app.get(url(controller='admin/admin', action='index',
101 filter='repository:test* OR repository:rhodecode'))
101 filter='repository:test* OR repository:xxx'))
102 response.mustcontain('260 entries') # 257 + 3
102 response.mustcontain('260 entries') # 257 + 3
103
103
104 def test_filter_journal_filter_exact_match_on_username(self):
104 def test_filter_journal_filter_exact_match_on_username(self):
105 self.log_user()
105 self.log_user()
106 response = self.app.get(url(controller='admin/admin', action='index',
106 response = self.app.get(url(controller='admin/admin', action='index',
107 filter='username:demo'))
107 filter='username:demo'))
108 response.mustcontain('1087 entries')
108 response.mustcontain('1087 entries')
109
109
110 def test_filter_journal_filter_exact_match_on_username_camelCase(self):
110 def test_filter_journal_filter_exact_match_on_username_camelCase(self):
111 self.log_user()
111 self.log_user()
112 response = self.app.get(url(controller='admin/admin', action='index',
112 response = self.app.get(url(controller='admin/admin', action='index',
113 filter='username:DemO'))
113 filter='username:DemO'))
114 response.mustcontain('1087 entries')
114 response.mustcontain('1087 entries')
115
115
116 def test_filter_journal_filter_wildcard_on_username(self):
116 def test_filter_journal_filter_wildcard_on_username(self):
117 self.log_user()
117 self.log_user()
118 response = self.app.get(url(controller='admin/admin', action='index',
118 response = self.app.get(url(controller='admin/admin', action='index',
119 filter='username:*test*'))
119 filter='username:*test*'))
120 response.mustcontain('100 entries')
120 response.mustcontain('100 entries')
121
121
122 def test_filter_journal_filter_prefix_on_username(self):
122 def test_filter_journal_filter_prefix_on_username(self):
123 self.log_user()
123 self.log_user()
124 response = self.app.get(url(controller='admin/admin', action='index',
124 response = self.app.get(url(controller='admin/admin', action='index',
125 filter='username:demo*'))
125 filter='username:demo*'))
126 response.mustcontain('1101 entries')
126 response.mustcontain('1101 entries')
127
127
128 def test_filter_journal_filter_prefix_on_user_or_other_user(self):
128 def test_filter_journal_filter_prefix_on_user_or_other_user(self):
129 self.log_user()
129 self.log_user()
130 response = self.app.get(url(controller='admin/admin', action='index',
130 response = self.app.get(url(controller='admin/admin', action='index',
131 filter='username:demo OR username:volcan'))
131 filter='username:demo OR username:volcan'))
132 response.mustcontain('1095 entries') # 1087 + 8
132 response.mustcontain('1095 entries') # 1087 + 8
133
133
134 def test_filter_journal_filter_wildcard_on_action(self):
134 def test_filter_journal_filter_wildcard_on_action(self):
135 self.log_user()
135 self.log_user()
136 response = self.app.get(url(controller='admin/admin', action='index',
136 response = self.app.get(url(controller='admin/admin', action='index',
137 filter='action:*pull_request*'))
137 filter='action:*pull_request*'))
138 response.mustcontain('187 entries')
138 response.mustcontain('187 entries')
139
139
140 def test_filter_journal_filter_on_date(self):
140 def test_filter_journal_filter_on_date(self):
141 self.log_user()
141 self.log_user()
142 response = self.app.get(url(controller='admin/admin', action='index',
142 response = self.app.get(url(controller='admin/admin', action='index',
143 filter='date:20121010'))
143 filter='date:20121010'))
144 response.mustcontain('47 entries')
144 response.mustcontain('47 entries')
145
145
146 def test_filter_journal_filter_on_date_2(self):
146 def test_filter_journal_filter_on_date_2(self):
147 self.log_user()
147 self.log_user()
148 response = self.app.get(url(controller='admin/admin', action='index',
148 response = self.app.get(url(controller='admin/admin', action='index',
149 filter='date:20121020'))
149 filter='date:20121020'))
150 response.mustcontain('17 entries')
150 response.mustcontain('17 entries')
@@ -1,531 +1,531 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 """
14 """
15 kallithea.tests.test_scm_operations
15 kallithea.tests.test_scm_operations
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
17
18 Test suite for making push/pull operations.
18 Test suite for making push/pull operations.
19 Run using after doing paster serve test.ini::
19 Run using after doing paster serve test.ini::
20 RC_WHOOSH_TEST_DISABLE=1 RC_NO_TMP_PATH=1 nosetests kallithea/tests/other/test_vcs_operations.py
20 KALLITHEA_WHOOSH_TEST_DISABLE=1 KALLITHEA_NO_TMP_PATH=1 nosetests kallithea/tests/other/test_vcs_operations.py
21
21
22 You must have git > 1.8.1 for tests to work fine
22 You must have git > 1.8.1 for tests to work fine
23
23
24 :created_on: Dec 30, 2010
24 :created_on: Dec 30, 2010
25 :author: marcink
25 :author: marcink
26 :copyright: (c) 2013 RhodeCode GmbH.
26 :copyright: (c) 2013 RhodeCode GmbH.
27 :license: GPLv3, see LICENSE for more details.
27 :license: GPLv3, see LICENSE for more details.
28
28
29 """
29 """
30
30
31 import tempfile
31 import tempfile
32 import time
32 import time
33 from os.path import join as jn
33 from os.path import join as jn
34
34
35 from tempfile import _RandomNameSequence
35 from tempfile import _RandomNameSequence
36 from subprocess import Popen, PIPE
36 from subprocess import Popen, PIPE
37
37
38 from kallithea.tests import *
38 from kallithea.tests import *
39 from kallithea.model.db import User, Repository, UserIpMap, CacheInvalidation
39 from kallithea.model.db import User, Repository, UserIpMap, CacheInvalidation
40 from kallithea.model.meta import Session
40 from kallithea.model.meta import Session
41 from kallithea.model.repo import RepoModel
41 from kallithea.model.repo import RepoModel
42 from kallithea.model.user import UserModel
42 from kallithea.model.user import UserModel
43
43
44 DEBUG = True
44 DEBUG = True
45 HOST = '127.0.0.1:5000' # test host
45 HOST = '127.0.0.1:5000' # test host
46
46
47
47
48 class Command(object):
48 class Command(object):
49
49
50 def __init__(self, cwd):
50 def __init__(self, cwd):
51 self.cwd = cwd
51 self.cwd = cwd
52
52
53 def execute(self, cmd, *args):
53 def execute(self, cmd, *args):
54 """
54 """
55 Runs command on the system with given ``args``.
55 Runs command on the system with given ``args``.
56 """
56 """
57
57
58 command = cmd + ' ' + ' '.join(args)
58 command = cmd + ' ' + ' '.join(args)
59 if DEBUG:
59 if DEBUG:
60 print '*** CMD %s ***' % command
60 print '*** CMD %s ***' % command
61 p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd)
61 p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd)
62 stdout, stderr = p.communicate()
62 stdout, stderr = p.communicate()
63 if DEBUG:
63 if DEBUG:
64 print stdout, stderr
64 print stdout, stderr
65 return stdout, stderr
65 return stdout, stderr
66
66
67
67
68 def _get_tmp_dir():
68 def _get_tmp_dir():
69 return tempfile.mkdtemp(prefix='rc_integration_test')
69 return tempfile.mkdtemp(prefix='rc_integration_test')
70
70
71
71
72 def _construct_url(repo, dest=None, **kwargs):
72 def _construct_url(repo, dest=None, **kwargs):
73 if dest is None:
73 if dest is None:
74 #make temp clone
74 #make temp clone
75 dest = _get_tmp_dir()
75 dest = _get_tmp_dir()
76 params = {
76 params = {
77 'user': TEST_USER_ADMIN_LOGIN,
77 'user': TEST_USER_ADMIN_LOGIN,
78 'passwd': TEST_USER_ADMIN_PASS,
78 'passwd': TEST_USER_ADMIN_PASS,
79 'host': HOST,
79 'host': HOST,
80 'cloned_repo': repo,
80 'cloned_repo': repo,
81 'dest': dest
81 'dest': dest
82 }
82 }
83 params.update(**kwargs)
83 params.update(**kwargs)
84 if params['user'] and params['passwd']:
84 if params['user'] and params['passwd']:
85 _url = 'http://%(user)s:%(passwd)s@%(host)s/%(cloned_repo)s %(dest)s' % params
85 _url = 'http://%(user)s:%(passwd)s@%(host)s/%(cloned_repo)s %(dest)s' % params
86 else:
86 else:
87 _url = 'http://(host)s/%(cloned_repo)s %(dest)s' % params
87 _url = 'http://(host)s/%(cloned_repo)s %(dest)s' % params
88 return _url
88 return _url
89
89
90
90
91 def _add_files_and_push(vcs, DEST, **kwargs):
91 def _add_files_and_push(vcs, DEST, **kwargs):
92 """
92 """
93 Generate some files, add it to DEST repo and push back
93 Generate some files, add it to DEST repo and push back
94 vcs is git or hg and defines what VCS we want to make those files for
94 vcs is git or hg and defines what VCS we want to make those files for
95
95
96 :param vcs:
96 :param vcs:
97 :param DEST:
97 :param DEST:
98 """
98 """
99 # commit some stuff into this repo
99 # commit some stuff into this repo
100 cwd = path = jn(DEST)
100 cwd = path = jn(DEST)
101 #added_file = jn(path, '%ssetupążźć.py' % _RandomNameSequence().next())
101 #added_file = jn(path, '%ssetupążźć.py' % _RandomNameSequence().next())
102 added_file = jn(path, '%ssetup.py' % _RandomNameSequence().next())
102 added_file = jn(path, '%ssetup.py' % _RandomNameSequence().next())
103 Command(cwd).execute('touch %s' % added_file)
103 Command(cwd).execute('touch %s' % added_file)
104 Command(cwd).execute('%s add %s' % (vcs, added_file))
104 Command(cwd).execute('%s add %s' % (vcs, added_file))
105
105
106 for i in xrange(kwargs.get('files_no', 3)):
106 for i in xrange(kwargs.get('files_no', 3)):
107 cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
107 cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
108 Command(cwd).execute(cmd)
108 Command(cwd).execute(cmd)
109 author_str = 'Marcin Kuźminski <me@email.com>'
109 author_str = 'Marcin Kuźminski <me@email.com>'
110 if vcs == 'hg':
110 if vcs == 'hg':
111 cmd = """hg commit -m 'commited new %s' -u '%s' %s """ % (
111 cmd = """hg commit -m 'commited new %s' -u '%s' %s """ % (
112 i, author_str, added_file
112 i, author_str, added_file
113 )
113 )
114 elif vcs == 'git':
114 elif vcs == 'git':
115 cmd = """EMAIL="me@email.com" git commit -m 'commited new %s' --author '%s' %s """ % (
115 cmd = """EMAIL="me@email.com" git commit -m 'commited new %s' --author '%s' %s """ % (
116 i, author_str, added_file
116 i, author_str, added_file
117 )
117 )
118 Command(cwd).execute(cmd)
118 Command(cwd).execute(cmd)
119
119
120 # PUSH it back
120 # PUSH it back
121 _REPO = None
121 _REPO = None
122 if vcs == 'hg':
122 if vcs == 'hg':
123 _REPO = HG_REPO
123 _REPO = HG_REPO
124 elif vcs == 'git':
124 elif vcs == 'git':
125 _REPO = GIT_REPO
125 _REPO = GIT_REPO
126
126
127 kwargs['dest'] = ''
127 kwargs['dest'] = ''
128 clone_url = _construct_url(_REPO, **kwargs)
128 clone_url = _construct_url(_REPO, **kwargs)
129 if 'clone_url' in kwargs:
129 if 'clone_url' in kwargs:
130 clone_url = kwargs['clone_url']
130 clone_url = kwargs['clone_url']
131 stdout = stderr = None
131 stdout = stderr = None
132 if vcs == 'hg':
132 if vcs == 'hg':
133 stdout, stderr = Command(cwd).execute('hg push --verbose', clone_url)
133 stdout, stderr = Command(cwd).execute('hg push --verbose', clone_url)
134 elif vcs == 'git':
134 elif vcs == 'git':
135 stdout, stderr = Command(cwd).execute('git push --verbose', clone_url + " master")
135 stdout, stderr = Command(cwd).execute('git push --verbose', clone_url + " master")
136
136
137 return stdout, stderr
137 return stdout, stderr
138
138
139
139
140 def set_anonymous_access(enable=True):
140 def set_anonymous_access(enable=True):
141 user = User.get_by_username(User.DEFAULT_USER)
141 user = User.get_by_username(User.DEFAULT_USER)
142 user.active = enable
142 user.active = enable
143 Session().add(user)
143 Session().add(user)
144 Session().commit()
144 Session().commit()
145 print '\tanonymous access is now:', enable
145 print '\tanonymous access is now:', enable
146 if enable != User.get_by_username(User.DEFAULT_USER).active:
146 if enable != User.get_by_username(User.DEFAULT_USER).active:
147 raise Exception('Cannot set anonymous access')
147 raise Exception('Cannot set anonymous access')
148
148
149
149
150 #==============================================================================
150 #==============================================================================
151 # TESTS
151 # TESTS
152 #==============================================================================
152 #==============================================================================
153
153
154
154
155 def _check_proper_git_push(stdout, stderr):
155 def _check_proper_git_push(stdout, stderr):
156 #WTF GIT stderr is output ?!
156 #WTF GIT stderr is output ?!
157 assert 'fatal' not in stderr
157 assert 'fatal' not in stderr
158 assert 'rejected' not in stderr
158 assert 'rejected' not in stderr
159 assert 'Pushing to' in stderr
159 assert 'Pushing to' in stderr
160 assert 'master -> master' in stderr
160 assert 'master -> master' in stderr
161
161
162
162
163 class TestVCSOperations(BaseTestCase):
163 class TestVCSOperations(BaseTestCase):
164
164
165 @classmethod
165 @classmethod
166 def setup_class(cls):
166 def setup_class(cls):
167 #DISABLE ANONYMOUS ACCESS
167 #DISABLE ANONYMOUS ACCESS
168 set_anonymous_access(False)
168 set_anonymous_access(False)
169
169
170 def setUp(self):
170 def setUp(self):
171 r = Repository.get_by_repo_name(GIT_REPO)
171 r = Repository.get_by_repo_name(GIT_REPO)
172 Repository.unlock(r)
172 Repository.unlock(r)
173 r.enable_locking = False
173 r.enable_locking = False
174 Session().add(r)
174 Session().add(r)
175 Session().commit()
175 Session().commit()
176
176
177 r = Repository.get_by_repo_name(HG_REPO)
177 r = Repository.get_by_repo_name(HG_REPO)
178 Repository.unlock(r)
178 Repository.unlock(r)
179 r.enable_locking = False
179 r.enable_locking = False
180 Session().add(r)
180 Session().add(r)
181 Session().commit()
181 Session().commit()
182
182
183 def test_clone_hg_repo_by_admin(self):
183 def test_clone_hg_repo_by_admin(self):
184 clone_url = _construct_url(HG_REPO)
184 clone_url = _construct_url(HG_REPO)
185 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
185 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
186
186
187 assert 'requesting all changes' in stdout
187 assert 'requesting all changes' in stdout
188 assert 'adding changesets' in stdout
188 assert 'adding changesets' in stdout
189 assert 'adding manifests' in stdout
189 assert 'adding manifests' in stdout
190 assert 'adding file changes' in stdout
190 assert 'adding file changes' in stdout
191
191
192 assert stderr == ''
192 assert stderr == ''
193
193
194 def test_clone_git_repo_by_admin(self):
194 def test_clone_git_repo_by_admin(self):
195 clone_url = _construct_url(GIT_REPO)
195 clone_url = _construct_url(GIT_REPO)
196 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
196 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
197
197
198 assert 'Cloning into' in stdout
198 assert 'Cloning into' in stdout
199 assert stderr == ''
199 assert stderr == ''
200
200
201 def test_clone_wrong_credentials_hg(self):
201 def test_clone_wrong_credentials_hg(self):
202 clone_url = _construct_url(HG_REPO, passwd='bad!')
202 clone_url = _construct_url(HG_REPO, passwd='bad!')
203 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
203 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
204 assert 'abort: authorization failed' in stderr
204 assert 'abort: authorization failed' in stderr
205
205
206 def test_clone_wrong_credentials_git(self):
206 def test_clone_wrong_credentials_git(self):
207 clone_url = _construct_url(GIT_REPO, passwd='bad!')
207 clone_url = _construct_url(GIT_REPO, passwd='bad!')
208 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
208 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
209 assert 'fatal: Authentication failed' in stderr
209 assert 'fatal: Authentication failed' in stderr
210
210
211 def test_clone_git_dir_as_hg(self):
211 def test_clone_git_dir_as_hg(self):
212 clone_url = _construct_url(GIT_REPO)
212 clone_url = _construct_url(GIT_REPO)
213 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
213 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
214 assert 'HTTP Error 404: Not Found' in stderr
214 assert 'HTTP Error 404: Not Found' in stderr
215
215
216 def test_clone_hg_repo_as_git(self):
216 def test_clone_hg_repo_as_git(self):
217 clone_url = _construct_url(HG_REPO)
217 clone_url = _construct_url(HG_REPO)
218 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
218 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
219 assert 'not found' in stderr
219 assert 'not found' in stderr
220
220
221 def test_clone_non_existing_path_hg(self):
221 def test_clone_non_existing_path_hg(self):
222 clone_url = _construct_url('trololo')
222 clone_url = _construct_url('trololo')
223 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
223 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
224 assert 'HTTP Error 404: Not Found' in stderr
224 assert 'HTTP Error 404: Not Found' in stderr
225
225
226 def test_clone_non_existing_path_git(self):
226 def test_clone_non_existing_path_git(self):
227 clone_url = _construct_url('trololo')
227 clone_url = _construct_url('trololo')
228 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
228 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
229 assert 'not found' in stderr
229 assert 'not found' in stderr
230
230
231 def test_push_new_file_hg(self):
231 def test_push_new_file_hg(self):
232 DEST = _get_tmp_dir()
232 DEST = _get_tmp_dir()
233 clone_url = _construct_url(HG_REPO, dest=DEST)
233 clone_url = _construct_url(HG_REPO, dest=DEST)
234 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
234 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
235
235
236 stdout, stderr = _add_files_and_push('hg', DEST)
236 stdout, stderr = _add_files_and_push('hg', DEST)
237
237
238 assert 'pushing to' in stdout
238 assert 'pushing to' in stdout
239 assert 'Repository size' in stdout
239 assert 'Repository size' in stdout
240 assert 'Last revision is now' in stdout
240 assert 'Last revision is now' in stdout
241
241
242 def test_push_new_file_git(self):
242 def test_push_new_file_git(self):
243 DEST = _get_tmp_dir()
243 DEST = _get_tmp_dir()
244 clone_url = _construct_url(GIT_REPO, dest=DEST)
244 clone_url = _construct_url(GIT_REPO, dest=DEST)
245 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
245 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
246
246
247 # commit some stuff into this repo
247 # commit some stuff into this repo
248 stdout, stderr = _add_files_and_push('git', DEST)
248 stdout, stderr = _add_files_and_push('git', DEST)
249
249
250 print [(x.repo_full_path,x.repo_path) for x in Repository.get_all()]
250 print [(x.repo_full_path,x.repo_path) for x in Repository.get_all()]
251 _check_proper_git_push(stdout, stderr)
251 _check_proper_git_push(stdout, stderr)
252
252
253 def test_push_invalidates_cache_hg(self):
253 def test_push_invalidates_cache_hg(self):
254 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
254 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
255 ==HG_REPO).scalar()
255 ==HG_REPO).scalar()
256 if not key:
256 if not key:
257 key = CacheInvalidation(HG_REPO, HG_REPO)
257 key = CacheInvalidation(HG_REPO, HG_REPO)
258
258
259 key.cache_active = True
259 key.cache_active = True
260 Session().add(key)
260 Session().add(key)
261 Session().commit()
261 Session().commit()
262
262
263 DEST = _get_tmp_dir()
263 DEST = _get_tmp_dir()
264 clone_url = _construct_url(HG_REPO, dest=DEST)
264 clone_url = _construct_url(HG_REPO, dest=DEST)
265 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
265 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
266
266
267 stdout, stderr = _add_files_and_push('hg', DEST, files_no=1)
267 stdout, stderr = _add_files_and_push('hg', DEST, files_no=1)
268
268
269 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
269 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
270 ==HG_REPO).one()
270 ==HG_REPO).one()
271 self.assertEqual(key.cache_active, False)
271 self.assertEqual(key.cache_active, False)
272
272
273 def test_push_invalidates_cache_git(self):
273 def test_push_invalidates_cache_git(self):
274 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
274 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
275 ==GIT_REPO).scalar()
275 ==GIT_REPO).scalar()
276 if not key:
276 if not key:
277 key = CacheInvalidation(GIT_REPO, GIT_REPO)
277 key = CacheInvalidation(GIT_REPO, GIT_REPO)
278
278
279 key.cache_active = True
279 key.cache_active = True
280 Session().add(key)
280 Session().add(key)
281 Session().commit()
281 Session().commit()
282
282
283 DEST = _get_tmp_dir()
283 DEST = _get_tmp_dir()
284 clone_url = _construct_url(GIT_REPO, dest=DEST)
284 clone_url = _construct_url(GIT_REPO, dest=DEST)
285 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
285 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
286
286
287 # commit some stuff into this repo
287 # commit some stuff into this repo
288 stdout, stderr = _add_files_and_push('git', DEST, files_no=1)
288 stdout, stderr = _add_files_and_push('git', DEST, files_no=1)
289 _check_proper_git_push(stdout, stderr)
289 _check_proper_git_push(stdout, stderr)
290
290
291 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
291 key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
292 ==GIT_REPO).one()
292 ==GIT_REPO).one()
293 print CacheInvalidation.get_all()
293 print CacheInvalidation.get_all()
294 self.assertEqual(key.cache_active, False)
294 self.assertEqual(key.cache_active, False)
295
295
296 def test_push_wrong_credentials_hg(self):
296 def test_push_wrong_credentials_hg(self):
297 DEST = _get_tmp_dir()
297 DEST = _get_tmp_dir()
298 clone_url = _construct_url(HG_REPO, dest=DEST)
298 clone_url = _construct_url(HG_REPO, dest=DEST)
299 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
299 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
300
300
301 stdout, stderr = _add_files_and_push('hg', DEST, user='bad',
301 stdout, stderr = _add_files_and_push('hg', DEST, user='bad',
302 passwd='name')
302 passwd='name')
303
303
304 assert 'abort: authorization failed' in stderr
304 assert 'abort: authorization failed' in stderr
305
305
306 def test_push_wrong_credentials_git(self):
306 def test_push_wrong_credentials_git(self):
307 DEST = _get_tmp_dir()
307 DEST = _get_tmp_dir()
308 clone_url = _construct_url(GIT_REPO, dest=DEST)
308 clone_url = _construct_url(GIT_REPO, dest=DEST)
309 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
309 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
310
310
311 stdout, stderr = _add_files_and_push('git', DEST, user='bad',
311 stdout, stderr = _add_files_and_push('git', DEST, user='bad',
312 passwd='name')
312 passwd='name')
313
313
314 assert 'fatal: Authentication failed' in stderr
314 assert 'fatal: Authentication failed' in stderr
315
315
316 def test_push_back_to_wrong_url_hg(self):
316 def test_push_back_to_wrong_url_hg(self):
317 DEST = _get_tmp_dir()
317 DEST = _get_tmp_dir()
318 clone_url = _construct_url(HG_REPO, dest=DEST)
318 clone_url = _construct_url(HG_REPO, dest=DEST)
319 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
319 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
320
320
321 stdout, stderr = _add_files_and_push('hg', DEST,
321 stdout, stderr = _add_files_and_push('hg', DEST,
322 clone_url='http://127.0.0.1:5000/tmp',)
322 clone_url='http://127.0.0.1:5000/tmp',)
323
323
324 assert 'HTTP Error 404: Not Found' in stderr
324 assert 'HTTP Error 404: Not Found' in stderr
325
325
326 def test_push_back_to_wrong_url_git(self):
326 def test_push_back_to_wrong_url_git(self):
327 DEST = _get_tmp_dir()
327 DEST = _get_tmp_dir()
328 clone_url = _construct_url(GIT_REPO, dest=DEST)
328 clone_url = _construct_url(GIT_REPO, dest=DEST)
329 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
329 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
330
330
331 stdout, stderr = _add_files_and_push('git', DEST,
331 stdout, stderr = _add_files_and_push('git', DEST,
332 clone_url='http://127.0.0.1:5000/tmp',)
332 clone_url='http://127.0.0.1:5000/tmp',)
333
333
334 assert 'not found' in stderr
334 assert 'not found' in stderr
335
335
336 def test_clone_and_create_lock_hg(self):
336 def test_clone_and_create_lock_hg(self):
337 # enable locking
337 # enable locking
338 r = Repository.get_by_repo_name(HG_REPO)
338 r = Repository.get_by_repo_name(HG_REPO)
339 r.enable_locking = True
339 r.enable_locking = True
340 Session().add(r)
340 Session().add(r)
341 Session().commit()
341 Session().commit()
342 # clone
342 # clone
343 clone_url = _construct_url(HG_REPO)
343 clone_url = _construct_url(HG_REPO)
344 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
344 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
345
345
346 #check if lock was made
346 #check if lock was made
347 r = Repository.get_by_repo_name(HG_REPO)
347 r = Repository.get_by_repo_name(HG_REPO)
348 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
348 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
349
349
350 def test_clone_and_create_lock_git(self):
350 def test_clone_and_create_lock_git(self):
351 # enable locking
351 # enable locking
352 r = Repository.get_by_repo_name(GIT_REPO)
352 r = Repository.get_by_repo_name(GIT_REPO)
353 r.enable_locking = True
353 r.enable_locking = True
354 Session().add(r)
354 Session().add(r)
355 Session().commit()
355 Session().commit()
356 # clone
356 # clone
357 clone_url = _construct_url(GIT_REPO)
357 clone_url = _construct_url(GIT_REPO)
358 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
358 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
359
359
360 #check if lock was made
360 #check if lock was made
361 r = Repository.get_by_repo_name(GIT_REPO)
361 r = Repository.get_by_repo_name(GIT_REPO)
362 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
362 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
363
363
364 def test_clone_after_repo_was_locked_hg(self):
364 def test_clone_after_repo_was_locked_hg(self):
365 #lock repo
365 #lock repo
366 r = Repository.get_by_repo_name(HG_REPO)
366 r = Repository.get_by_repo_name(HG_REPO)
367 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
367 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
368 #pull fails since repo is locked
368 #pull fails since repo is locked
369 clone_url = _construct_url(HG_REPO)
369 clone_url = _construct_url(HG_REPO)
370 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
370 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
371 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
371 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
372 % (HG_REPO, TEST_USER_ADMIN_LOGIN))
372 % (HG_REPO, TEST_USER_ADMIN_LOGIN))
373 assert msg in stderr
373 assert msg in stderr
374
374
375 def test_clone_after_repo_was_locked_git(self):
375 def test_clone_after_repo_was_locked_git(self):
376 #lock repo
376 #lock repo
377 r = Repository.get_by_repo_name(GIT_REPO)
377 r = Repository.get_by_repo_name(GIT_REPO)
378 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
378 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
379 #pull fails since repo is locked
379 #pull fails since repo is locked
380 clone_url = _construct_url(GIT_REPO)
380 clone_url = _construct_url(GIT_REPO)
381 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
381 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
382 msg = ("""The requested URL returned error: 423""")
382 msg = ("""The requested URL returned error: 423""")
383 assert msg in stderr
383 assert msg in stderr
384
384
385 def test_push_on_locked_repo_by_other_user_hg(self):
385 def test_push_on_locked_repo_by_other_user_hg(self):
386 #clone some temp
386 #clone some temp
387 DEST = _get_tmp_dir()
387 DEST = _get_tmp_dir()
388 clone_url = _construct_url(HG_REPO, dest=DEST)
388 clone_url = _construct_url(HG_REPO, dest=DEST)
389 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
389 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
390
390
391 #lock repo
391 #lock repo
392 r = Repository.get_by_repo_name(HG_REPO)
392 r = Repository.get_by_repo_name(HG_REPO)
393 # let this user actually push !
393 # let this user actually push !
394 RepoModel().grant_user_permission(repo=r, user=TEST_USER_REGULAR_LOGIN,
394 RepoModel().grant_user_permission(repo=r, user=TEST_USER_REGULAR_LOGIN,
395 perm='repository.write')
395 perm='repository.write')
396 Session().commit()
396 Session().commit()
397 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
397 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
398
398
399 #push fails repo is locked by other user !
399 #push fails repo is locked by other user !
400 stdout, stderr = _add_files_and_push('hg', DEST,
400 stdout, stderr = _add_files_and_push('hg', DEST,
401 user=TEST_USER_REGULAR_LOGIN,
401 user=TEST_USER_REGULAR_LOGIN,
402 passwd=TEST_USER_REGULAR_PASS)
402 passwd=TEST_USER_REGULAR_PASS)
403 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
403 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
404 % (HG_REPO, TEST_USER_ADMIN_LOGIN))
404 % (HG_REPO, TEST_USER_ADMIN_LOGIN))
405 assert msg in stderr
405 assert msg in stderr
406
406
407 def test_push_on_locked_repo_by_other_user_git(self):
407 def test_push_on_locked_repo_by_other_user_git(self):
408 #clone some temp
408 #clone some temp
409 DEST = _get_tmp_dir()
409 DEST = _get_tmp_dir()
410 clone_url = _construct_url(GIT_REPO, dest=DEST)
410 clone_url = _construct_url(GIT_REPO, dest=DEST)
411 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
411 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
412
412
413 #lock repo
413 #lock repo
414 r = Repository.get_by_repo_name(GIT_REPO)
414 r = Repository.get_by_repo_name(GIT_REPO)
415 # let this user actually push !
415 # let this user actually push !
416 RepoModel().grant_user_permission(repo=r, user=TEST_USER_REGULAR_LOGIN,
416 RepoModel().grant_user_permission(repo=r, user=TEST_USER_REGULAR_LOGIN,
417 perm='repository.write')
417 perm='repository.write')
418 Session().commit()
418 Session().commit()
419 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
419 Repository.lock(r, User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id)
420
420
421 #push fails repo is locked by other user !
421 #push fails repo is locked by other user !
422 stdout, stderr = _add_files_and_push('git', DEST,
422 stdout, stderr = _add_files_and_push('git', DEST,
423 user=TEST_USER_REGULAR_LOGIN,
423 user=TEST_USER_REGULAR_LOGIN,
424 passwd=TEST_USER_REGULAR_PASS)
424 passwd=TEST_USER_REGULAR_PASS)
425 err = 'Repository `%s` locked by user `%s`' % (GIT_REPO, TEST_USER_ADMIN_LOGIN)
425 err = 'Repository `%s` locked by user `%s`' % (GIT_REPO, TEST_USER_ADMIN_LOGIN)
426 assert err in stderr
426 assert err in stderr
427
427
428 #TODO: fix this somehow later on GIT, GIT is stupid and even if we throw
428 #TODO: fix this somehow later on GIT, GIT is stupid and even if we throw
429 #back 423 to it, it makes ANOTHER request and we fail there with 405 :/
429 #back 423 to it, it makes ANOTHER request and we fail there with 405 :/
430
430
431 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
431 msg = ("""abort: HTTP Error 423: Repository `%s` locked by user `%s`"""
432 % (GIT_REPO, TEST_USER_ADMIN_LOGIN))
432 % (GIT_REPO, TEST_USER_ADMIN_LOGIN))
433 #msg = "405 Method Not Allowed"
433 #msg = "405 Method Not Allowed"
434 #assert msg in stderr
434 #assert msg in stderr
435
435
436 def test_push_unlocks_repository_hg(self):
436 def test_push_unlocks_repository_hg(self):
437 # enable locking
437 # enable locking
438 r = Repository.get_by_repo_name(HG_REPO)
438 r = Repository.get_by_repo_name(HG_REPO)
439 r.enable_locking = True
439 r.enable_locking = True
440 Session().add(r)
440 Session().add(r)
441 Session().commit()
441 Session().commit()
442 #clone some temp
442 #clone some temp
443 DEST = _get_tmp_dir()
443 DEST = _get_tmp_dir()
444 clone_url = _construct_url(HG_REPO, dest=DEST)
444 clone_url = _construct_url(HG_REPO, dest=DEST)
445 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
445 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
446
446
447 #check for lock repo after clone
447 #check for lock repo after clone
448 r = Repository.get_by_repo_name(HG_REPO)
448 r = Repository.get_by_repo_name(HG_REPO)
449 uid = User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
449 uid = User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
450 assert r.locked[0] == uid
450 assert r.locked[0] == uid
451
451
452 #push is ok and repo is now unlocked
452 #push is ok and repo is now unlocked
453 stdout, stderr = _add_files_and_push('hg', DEST)
453 stdout, stderr = _add_files_and_push('hg', DEST)
454 assert ('remote: Released lock on repo `%s`' % HG_REPO) in stdout
454 assert ('remote: Released lock on repo `%s`' % HG_REPO) in stdout
455 #we need to cleanup the Session Here !
455 #we need to cleanup the Session Here !
456 Session.remove()
456 Session.remove()
457 r = Repository.get_by_repo_name(HG_REPO)
457 r = Repository.get_by_repo_name(HG_REPO)
458 assert r.locked == [None, None]
458 assert r.locked == [None, None]
459
459
460 #TODO: fix me ! somehow during tests hooks don't get called on GIT
460 #TODO: fix me ! somehow during tests hooks don't get called on GIT
461 def test_push_unlocks_repository_git(self):
461 def test_push_unlocks_repository_git(self):
462 # enable locking
462 # enable locking
463 r = Repository.get_by_repo_name(GIT_REPO)
463 r = Repository.get_by_repo_name(GIT_REPO)
464 r.enable_locking = True
464 r.enable_locking = True
465 Session().add(r)
465 Session().add(r)
466 Session().commit()
466 Session().commit()
467 #clone some temp
467 #clone some temp
468 DEST = _get_tmp_dir()
468 DEST = _get_tmp_dir()
469 clone_url = _construct_url(GIT_REPO, dest=DEST)
469 clone_url = _construct_url(GIT_REPO, dest=DEST)
470 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
470 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
471
471
472 #check for lock repo after clone
472 #check for lock repo after clone
473 r = Repository.get_by_repo_name(GIT_REPO)
473 r = Repository.get_by_repo_name(GIT_REPO)
474 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
474 assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
475
475
476 #push is ok and repo is now unlocked
476 #push is ok and repo is now unlocked
477 stdout, stderr = _add_files_and_push('git', DEST)
477 stdout, stderr = _add_files_and_push('git', DEST)
478 _check_proper_git_push(stdout, stderr)
478 _check_proper_git_push(stdout, stderr)
479
479
480 #assert ('remote: Released lock on repo `%s`' % GIT_REPO) in stdout
480 #assert ('remote: Released lock on repo `%s`' % GIT_REPO) in stdout
481 #we need to cleanup the Session Here !
481 #we need to cleanup the Session Here !
482 Session.remove()
482 Session.remove()
483 r = Repository.get_by_repo_name(GIT_REPO)
483 r = Repository.get_by_repo_name(GIT_REPO)
484 assert r.locked == [None, None]
484 assert r.locked == [None, None]
485
485
486 def test_ip_restriction_hg(self):
486 def test_ip_restriction_hg(self):
487 user_model = UserModel()
487 user_model = UserModel()
488 try:
488 try:
489 user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32')
489 user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32')
490 Session().commit()
490 Session().commit()
491 clone_url = _construct_url(HG_REPO)
491 clone_url = _construct_url(HG_REPO)
492 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
492 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
493 assert 'abort: HTTP Error 403: Forbidden' in stderr
493 assert 'abort: HTTP Error 403: Forbidden' in stderr
494 finally:
494 finally:
495 #release IP restrictions
495 #release IP restrictions
496 for ip in UserIpMap.getAll():
496 for ip in UserIpMap.getAll():
497 UserIpMap.delete(ip.ip_id)
497 UserIpMap.delete(ip.ip_id)
498 Session().commit()
498 Session().commit()
499
499
500 time.sleep(2)
500 time.sleep(2)
501 clone_url = _construct_url(HG_REPO)
501 clone_url = _construct_url(HG_REPO)
502 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
502 stdout, stderr = Command('/tmp').execute('hg clone', clone_url)
503
503
504 assert 'requesting all changes' in stdout
504 assert 'requesting all changes' in stdout
505 assert 'adding changesets' in stdout
505 assert 'adding changesets' in stdout
506 assert 'adding manifests' in stdout
506 assert 'adding manifests' in stdout
507 assert 'adding file changes' in stdout
507 assert 'adding file changes' in stdout
508
508
509 assert stderr == ''
509 assert stderr == ''
510
510
511 def test_ip_restriction_git(self):
511 def test_ip_restriction_git(self):
512 user_model = UserModel()
512 user_model = UserModel()
513 try:
513 try:
514 user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32')
514 user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32')
515 Session().commit()
515 Session().commit()
516 clone_url = _construct_url(GIT_REPO)
516 clone_url = _construct_url(GIT_REPO)
517 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
517 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
518 msg = ("""The requested URL returned error: 403""")
518 msg = ("""The requested URL returned error: 403""")
519 assert msg in stderr
519 assert msg in stderr
520 finally:
520 finally:
521 #release IP restrictions
521 #release IP restrictions
522 for ip in UserIpMap.getAll():
522 for ip in UserIpMap.getAll():
523 UserIpMap.delete(ip.ip_id)
523 UserIpMap.delete(ip.ip_id)
524 Session().commit()
524 Session().commit()
525
525
526 time.sleep(2)
526 time.sleep(2)
527 clone_url = _construct_url(GIT_REPO)
527 clone_url = _construct_url(GIT_REPO)
528 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
528 stdout, stderr = Command('/tmp').execute('git clone', clone_url)
529
529
530 assert 'Cloning into' in stdout
530 assert 'Cloning into' in stdout
531 assert stderr == ''
531 assert stderr == ''
@@ -1,187 +1,187 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 """
14 """
15 kallithea.tests.test_crawer
15 kallithea.tests.test_crawer
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
17
18 Test for crawling a project for memory usage
18 Test for crawling a project for memory usage
19 This should be runned just as regular script together
19 This should be runned just as regular script together
20 with a watch script that will show memory usage.
20 with a watch script that will show memory usage.
21
21
22 watch -n1 ./kallithea/tests/mem_watch
22 watch -n1 ./kallithea/tests/mem_watch
23
23
24 :created_on: Apr 21, 2010
24 :created_on: Apr 21, 2010
25 :author: marcink
25 :author: marcink
26 :copyright: (c) 2013 RhodeCode GmbH.
26 :copyright: (c) 2013 RhodeCode GmbH.
27 :license: GPLv3, see LICENSE for more details.
27 :license: GPLv3, see LICENSE for more details.
28 """
28 """
29
29
30
30
31 import cookielib
31 import cookielib
32 import urllib
32 import urllib
33 import urllib2
33 import urllib2
34 import time
34 import time
35 import os
35 import os
36 import sys
36 import sys
37 from os.path import join as jn
37 from os.path import join as jn
38 from os.path import dirname as dn
38 from os.path import dirname as dn
39
39
40 __here__ = os.path.abspath(__file__)
40 __here__ = os.path.abspath(__file__)
41 __root__ = dn(dn(dn(__here__)))
41 __root__ = dn(dn(dn(__here__)))
42 sys.path.append(__root__)
42 sys.path.append(__root__)
43
43
44 from kallithea.lib import vcs
44 from kallithea.lib import vcs
45 from kallithea.lib.compat import OrderedSet
45 from kallithea.lib.compat import OrderedSet
46 from kallithea.lib.vcs.exceptions import RepositoryError
46 from kallithea.lib.vcs.exceptions import RepositoryError
47
47
48 PASES = 3
48 PASES = 3
49 HOST = 'http://127.0.0.1'
49 HOST = 'http://127.0.0.1'
50 PORT = 5000
50 PORT = 5000
51 BASE_URI = '%s:%s/' % (HOST, PORT)
51 BASE_URI = '%s:%s/' % (HOST, PORT)
52
52
53 if len(sys.argv) == 2:
53 if len(sys.argv) == 2:
54 BASE_URI = sys.argv[1]
54 BASE_URI = sys.argv[1]
55
55
56 if not BASE_URI.endswith('/'):
56 if not BASE_URI.endswith('/'):
57 BASE_URI += '/'
57 BASE_URI += '/'
58
58
59 print 'Crawling @ %s' % BASE_URI
59 print 'Crawling @ %s' % BASE_URI
60 BASE_URI += '%s'
60 BASE_URI += '%s'
61 PROJECT_PATH = jn('/', 'home', 'marcink', 'repos')
61 PROJECT_PATH = jn('/', 'home', 'marcink', 'repos')
62 PROJECTS = [
62 PROJECTS = [
63 #'linux-magx-pbranch',
63 #'linux-magx-pbranch',
64 'CPython',
64 'CPython',
65 'rhodecode_tip',
65 'kallithea',
66 ]
66 ]
67
67
68
68
69 cj = cookielib.FileCookieJar('/tmp/rc_test_cookie.txt')
69 cj = cookielib.FileCookieJar('/tmp/rc_test_cookie.txt')
70 o = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
70 o = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
71 o.addheaders = [
71 o.addheaders = [
72 ('User-agent', 'rhodecode-crawler'),
72 ('User-agent', 'kallithea-crawler'),
73 ('Accept-Language', 'en - us, en;q = 0.5')
73 ('Accept-Language', 'en - us, en;q = 0.5')
74 ]
74 ]
75
75
76 urllib2.install_opener(o)
76 urllib2.install_opener(o)
77
77
78
78
79 def _get_repo(proj):
79 def _get_repo(proj):
80 if isinstance(proj, basestring):
80 if isinstance(proj, basestring):
81 repo = vcs.get_repo(jn(PROJECT_PATH, proj))
81 repo = vcs.get_repo(jn(PROJECT_PATH, proj))
82 proj = proj
82 proj = proj
83 else:
83 else:
84 repo = proj
84 repo = proj
85 proj = repo.name
85 proj = repo.name
86
86
87 return repo, proj
87 return repo, proj
88
88
89
89
90 def test_changelog_walk(proj, pages=100):
90 def test_changelog_walk(proj, pages=100):
91 repo, proj = _get_repo(proj)
91 repo, proj = _get_repo(proj)
92
92
93 total_time = 0
93 total_time = 0
94 for i in range(1, pages):
94 for i in range(1, pages):
95
95
96 page = '/'.join((proj, 'changelog',))
96 page = '/'.join((proj, 'changelog',))
97
97
98 full_uri = (BASE_URI % page) + '?' + urllib.urlencode({'page': i})
98 full_uri = (BASE_URI % page) + '?' + urllib.urlencode({'page': i})
99 s = time.time()
99 s = time.time()
100 f = o.open(full_uri)
100 f = o.open(full_uri)
101
101
102 assert f.url == full_uri, 'URL:%s does not match %s' % (f.url, full_uri)
102 assert f.url == full_uri, 'URL:%s does not match %s' % (f.url, full_uri)
103
103
104 size = len(f.read())
104 size = len(f.read())
105 e = time.time() - s
105 e = time.time() - s
106 total_time += e
106 total_time += e
107 print 'visited %s size:%s req:%s ms' % (full_uri, size, e)
107 print 'visited %s size:%s req:%s ms' % (full_uri, size, e)
108
108
109 print 'total_time', total_time
109 print 'total_time', total_time
110 print 'average on req', total_time / float(pages)
110 print 'average on req', total_time / float(pages)
111
111
112
112
113 def test_changeset_walk(proj, limit=None):
113 def test_changeset_walk(proj, limit=None):
114 repo, proj = _get_repo(proj)
114 repo, proj = _get_repo(proj)
115
115
116 print 'processing', jn(PROJECT_PATH, proj)
116 print 'processing', jn(PROJECT_PATH, proj)
117 total_time = 0
117 total_time = 0
118
118
119 cnt = 0
119 cnt = 0
120 for i in repo:
120 for i in repo:
121 cnt += 1
121 cnt += 1
122 raw_cs = '/'.join((proj, 'changeset', i.raw_id))
122 raw_cs = '/'.join((proj, 'changeset', i.raw_id))
123 if limit and limit == cnt:
123 if limit and limit == cnt:
124 break
124 break
125
125
126 full_uri = (BASE_URI % raw_cs)
126 full_uri = (BASE_URI % raw_cs)
127 print '%s visiting %s\%s' % (cnt, full_uri, i)
127 print '%s visiting %s\%s' % (cnt, full_uri, i)
128 s = time.time()
128 s = time.time()
129 f = o.open(full_uri)
129 f = o.open(full_uri)
130 size = len(f.read())
130 size = len(f.read())
131 e = time.time() - s
131 e = time.time() - s
132 total_time += e
132 total_time += e
133 print '%s visited %s\%s size:%s req:%s ms' % (cnt, full_uri, i, size, e)
133 print '%s visited %s\%s size:%s req:%s ms' % (cnt, full_uri, i, size, e)
134
134
135 print 'total_time', total_time
135 print 'total_time', total_time
136 print 'average on req', total_time / float(cnt)
136 print 'average on req', total_time / float(cnt)
137
137
138
138
139 def test_files_walk(proj, limit=100):
139 def test_files_walk(proj, limit=100):
140 repo, proj = _get_repo(proj)
140 repo, proj = _get_repo(proj)
141
141
142 print 'processing', jn(PROJECT_PATH, proj)
142 print 'processing', jn(PROJECT_PATH, proj)
143 total_time = 0
143 total_time = 0
144
144
145 paths_ = OrderedSet([''])
145 paths_ = OrderedSet([''])
146 try:
146 try:
147 tip = repo.get_changeset('tip')
147 tip = repo.get_changeset('tip')
148 for topnode, dirs, files in tip.walk('/'):
148 for topnode, dirs, files in tip.walk('/'):
149
149
150 for dir in dirs:
150 for dir in dirs:
151 paths_.add(dir.path)
151 paths_.add(dir.path)
152 for f in dir:
152 for f in dir:
153 paths_.add(f.path)
153 paths_.add(f.path)
154
154
155 for f in files:
155 for f in files:
156 paths_.add(f.path)
156 paths_.add(f.path)
157
157
158 except RepositoryError, e:
158 except RepositoryError, e:
159 pass
159 pass
160
160
161 cnt = 0
161 cnt = 0
162 for f in paths_:
162 for f in paths_:
163 cnt += 1
163 cnt += 1
164 if limit and limit == cnt:
164 if limit and limit == cnt:
165 break
165 break
166
166
167 file_path = '/'.join((proj, 'files', 'tip', f))
167 file_path = '/'.join((proj, 'files', 'tip', f))
168 full_uri = (BASE_URI % file_path)
168 full_uri = (BASE_URI % file_path)
169 print '%s visiting %s' % (cnt, full_uri)
169 print '%s visiting %s' % (cnt, full_uri)
170 s = time.time()
170 s = time.time()
171 f = o.open(full_uri)
171 f = o.open(full_uri)
172 size = len(f.read())
172 size = len(f.read())
173 e = time.time() - s
173 e = time.time() - s
174 total_time += e
174 total_time += e
175 print '%s visited OK size:%s req:%s ms' % (cnt, size, e)
175 print '%s visited OK size:%s req:%s ms' % (cnt, size, e)
176
176
177 print 'total_time', total_time
177 print 'total_time', total_time
178 print 'average on req', total_time / float(cnt)
178 print 'average on req', total_time / float(cnt)
179
179
180 if __name__ == '__main__':
180 if __name__ == '__main__':
181 for path in PROJECTS:
181 for path in PROJECTS:
182 repo = vcs.get_repo(jn(PROJECT_PATH, path))
182 repo = vcs.get_repo(jn(PROJECT_PATH, path))
183 for i in range(PASES):
183 for i in range(PASES):
184 print 'PASS %s/%s' % (i, PASES)
184 print 'PASS %s/%s' % (i, PASES)
185 test_changelog_walk(repo, pages=80)
185 test_changelog_walk(repo, pages=80)
186 test_changeset_walk(repo, limit=100)
186 test_changeset_walk(repo, limit=100)
187 test_files_walk(repo, limit=100)
187 test_files_walk(repo, limit=100)
@@ -1,486 +1,486 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # RhodeCode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 pdebug = false
10 pdebug = false
11 ################################################################################
11 ################################################################################
12 ## Uncomment and replace with the address which should receive ##
12 ## Uncomment and replace with the address which should receive ##
13 ## any error reports after application crash ##
13 ## any error reports after application crash ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16 #email_to = admin@localhost
16 #email_to = admin@localhost
17 #error_email_from = paste_error@localhost
17 #error_email_from = paste_error@localhost
18 #app_email_from = rhodecode-noreply@localhost
18 #app_email_from = rhodecode-noreply@localhost
19 #error_message =
19 #error_message =
20 #email_prefix = [RhodeCode]
20 #email_prefix = [RhodeCode]
21
21
22 #smtp_server = mail.server.com
22 #smtp_server = mail.server.com
23 #smtp_username =
23 #smtp_username =
24 #smtp_password =
24 #smtp_password =
25 #smtp_port =
25 #smtp_port =
26 #smtp_use_tls = false
26 #smtp_use_tls = false
27 #smtp_use_ssl = true
27 #smtp_use_ssl = true
28 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
28 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ## PASTE
32 ## PASTE
33 ## nr of threads to spawn
33 ## nr of threads to spawn
34 #threadpool_workers = 5
34 #threadpool_workers = 5
35
35
36 ## max request before thread respawn
36 ## max request before thread respawn
37 #threadpool_max_requests = 10
37 #threadpool_max_requests = 10
38
38
39 ## option to use threads of process
39 ## option to use threads of process
40 #use_threadpool = true
40 #use_threadpool = true
41
41
42 #use = egg:Paste#http
42 #use = egg:Paste#http
43
43
44 ## WAITRESS
44 ## WAITRESS
45 threads = 5
45 threads = 5
46 ## 100GB
46 ## 100GB
47 max_request_body_size = 107374182400
47 max_request_body_size = 107374182400
48 use = egg:waitress#main
48 use = egg:waitress#main
49
49
50 host = 0.0.0.0
50 host = 0.0.0.0
51 port = 5000
51 port = 5000
52
52
53 ## prefix middleware for rc
53 ## prefix middleware for rc
54 #[filter:proxy-prefix]
54 #[filter:proxy-prefix]
55 #use = egg:PasteDeploy#prefix
55 #use = egg:PasteDeploy#prefix
56 #prefix = /<your-prefix>
56 #prefix = /<your-prefix>
57
57
58 [app:main]
58 [app:main]
59 use = egg:kallithea
59 use = egg:kallithea
60 ## enable proxy prefix middleware
60 ## enable proxy prefix middleware
61 #filter-with = proxy-prefix
61 #filter-with = proxy-prefix
62
62
63 full_stack = true
63 full_stack = true
64 static_files = true
64 static_files = true
65 ## Optional Languages
65 ## Optional Languages
66 ## en, fr, ja, pt_BR, zh_CN, zh_TW, pl
66 ## en, fr, ja, pt_BR, zh_CN, zh_TW, pl
67 lang = en
67 lang = en
68 cache_dir = /tmp/rc/data
68 cache_dir = /tmp/rc/data
69 index_dir = /tmp/rc/index
69 index_dir = /tmp/rc/index
70
70
71 ## perform a full repository scan on each server start, this should be
71 ## perform a full repository scan on each server start, this should be
72 ## set to false after first startup, to allow faster server restarts.
72 ## set to false after first startup, to allow faster server restarts.
73 initial_repo_scan = true
73 initial_repo_scan = true
74
74
75 ## uncomment and set this path to use archive download cache
75 ## uncomment and set this path to use archive download cache
76 #archive_cache_dir = /tmp/tarballcache
76 #archive_cache_dir = /tmp/tarballcache
77
77
78 ## change this to unique ID for security
78 ## change this to unique ID for security
79 app_instance_uuid = rc-production
79 app_instance_uuid = rc-production
80
80
81 ## cut off limit for large diffs (size in bytes)
81 ## cut off limit for large diffs (size in bytes)
82 cut_off_limit = 256000
82 cut_off_limit = 256000
83
83
84 ## use cache version of scm repo everywhere
84 ## use cache version of scm repo everywhere
85 vcs_full_cache = false
85 vcs_full_cache = false
86
86
87 ## force https in RhodeCode, fixes https redirects, assumes it's always https
87 ## force https in RhodeCode, fixes https redirects, assumes it's always https
88 force_https = false
88 force_https = false
89
89
90 ## use Strict-Transport-Security headers
90 ## use Strict-Transport-Security headers
91 use_htsts = false
91 use_htsts = false
92
92
93 ## number of commits stats will parse on each iteration
93 ## number of commits stats will parse on each iteration
94 commit_parse_limit = 25
94 commit_parse_limit = 25
95
95
96 ## number of items displayed in lightweight dashboard before paginating is shown
96 ## number of items displayed in lightweight dashboard before paginating is shown
97 dashboard_items = 100
97 dashboard_items = 100
98
98
99 ## use gravatar service to display avatars
99 ## use gravatar service to display avatars
100 use_gravatar = true
100 use_gravatar = true
101
101
102 ## path to git executable
102 ## path to git executable
103 git_path = git
103 git_path = git
104
104
105 ## git rev filter option, --all is the default filter, if you need to
105 ## git rev filter option, --all is the default filter, if you need to
106 ## hide all refs in changelog switch this to --branches --tags
106 ## hide all refs in changelog switch this to --branches --tags
107 git_rev_filter=--all
107 git_rev_filter=--all
108
108
109 ## RSS feed options
109 ## RSS feed options
110 rss_cut_off_limit = 256000
110 rss_cut_off_limit = 256000
111 rss_items_per_page = 10
111 rss_items_per_page = 10
112 rss_include_diff = false
112 rss_include_diff = false
113
113
114 ## options for showing and identifying changesets
114 ## options for showing and identifying changesets
115 show_sha_length = 12
115 show_sha_length = 12
116 show_revision_number = true
116 show_revision_number = true
117
117
118
118
119 ## alternative_gravatar_url allows you to use your own avatar server application
119 ## alternative_gravatar_url allows you to use your own avatar server application
120 ## the following parts of the URL will be replaced
120 ## the following parts of the URL will be replaced
121 ## {email} user email
121 ## {email} user email
122 ## {md5email} md5 hash of the user email (like at gravatar.com)
122 ## {md5email} md5 hash of the user email (like at gravatar.com)
123 ## {size} size of the image that is expected from the server application
123 ## {size} size of the image that is expected from the server application
124 ## {scheme} http/https from RhodeCode server
124 ## {scheme} http/https from RhodeCode server
125 ## {netloc} network location from RhodeCode server
125 ## {netloc} network location from RhodeCode server
126 #alternative_gravatar_url = http://myavatarserver.com/getbyemail/{email}/{size}
126 #alternative_gravatar_url = http://myavatarserver.com/getbyemail/{email}/{size}
127 #alternative_gravatar_url = http://myavatarserver.com/getbymd5/{md5email}?s={size}
127 #alternative_gravatar_url = http://myavatarserver.com/getbymd5/{md5email}?s={size}
128
128
129
129
130 ## container auth options
130 ## container auth options
131 container_auth_enabled = false
131 container_auth_enabled = false
132 proxypass_auth_enabled = false
132 proxypass_auth_enabled = false
133
133
134 ## default encoding used to convert from and to unicode
134 ## default encoding used to convert from and to unicode
135 ## can be also a comma seperated list of encoding in case of mixed encodings
135 ## can be also a comma seperated list of encoding in case of mixed encodings
136 default_encoding = utf8
136 default_encoding = utf8
137
137
138 ## overwrite schema of clone url
138 ## overwrite schema of clone url
139 ## available vars:
139 ## available vars:
140 ## scheme - http/https
140 ## scheme - http/https
141 ## user - current user
141 ## user - current user
142 ## pass - password
142 ## pass - password
143 ## netloc - network location
143 ## netloc - network location
144 ## path - usually repo_name
144 ## path - usually repo_name
145
145
146 #clone_uri = {scheme}://{user}{pass}{netloc}{path}
146 #clone_uri = {scheme}://{user}{pass}{netloc}{path}
147
147
148 ## issue tracking mapping for commits messages
148 ## issue tracking mapping for commits messages
149 ## comment out issue_pat, issue_server, issue_prefix to enable
149 ## comment out issue_pat, issue_server, issue_prefix to enable
150
150
151 ## pattern to get the issues from commit messages
151 ## pattern to get the issues from commit messages
152 ## default one used here is #<numbers> with a regex passive group for `#`
152 ## default one used here is #<numbers> with a regex passive group for `#`
153 ## {id} will be all groups matched from this pattern
153 ## {id} will be all groups matched from this pattern
154
154
155 issue_pat = (?:\s*#)(\d+)
155 issue_pat = (?:\s*#)(\d+)
156
156
157 ## server url to the issue, each {id} will be replaced with match
157 ## server url to the issue, each {id} will be replaced with match
158 ## fetched from the regex and {repo} is replaced with full repository name
158 ## fetched from the regex and {repo} is replaced with full repository name
159 ## including groups {repo_name} is replaced with just name of repo
159 ## including groups {repo_name} is replaced with just name of repo
160
160
161 issue_server_link = https://myissueserver.com/{repo}/issue/{id}
161 issue_server_link = https://myissueserver.com/{repo}/issue/{id}
162
162
163 ## prefix to add to link to indicate it's an url
163 ## prefix to add to link to indicate it's an url
164 ## #314 will be replaced by <issue_prefix><id>
164 ## #314 will be replaced by <issue_prefix><id>
165
165
166 issue_prefix = #
166 issue_prefix = #
167
167
168 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
168 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
169 ## multiple patterns, to other issues server, wiki or others
169 ## multiple patterns, to other issues server, wiki or others
170 ## below an example how to create a wiki pattern
170 ## below an example how to create a wiki pattern
171 # #wiki-some-id -> https://mywiki.com/some-id
171 # #wiki-some-id -> https://mywiki.com/some-id
172
172
173 #issue_pat_wiki = (?:wiki-)(.+)
173 #issue_pat_wiki = (?:wiki-)(.+)
174 #issue_server_link_wiki = https://mywiki.com/{id}
174 #issue_server_link_wiki = https://mywiki.com/{id}
175 #issue_prefix_wiki = WIKI-
175 #issue_prefix_wiki = WIKI-
176
176
177
177
178 ## instance-id prefix
178 ## instance-id prefix
179 ## a prefix key for this instance used for cache invalidation when running
179 ## a prefix key for this instance used for cache invalidation when running
180 ## multiple instances of rhodecode, make sure it's globally unique for
180 ## multiple instances of rhodecode, make sure it's globally unique for
181 ## all running rhodecode instances. Leave empty if you don't use it
181 ## all running rhodecode instances. Leave empty if you don't use it
182 instance_id =
182 instance_id =
183
183
184 ## alternative return HTTP header for failed authentication. Default HTTP
184 ## alternative return HTTP header for failed authentication. Default HTTP
185 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
185 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
186 ## handling that. Set this variable to 403 to return HTTPForbidden
186 ## handling that. Set this variable to 403 to return HTTPForbidden
187 auth_ret_code =
187 auth_ret_code =
188
188
189 ## locking return code. When repository is locked return this HTTP code. 2XX
189 ## locking return code. When repository is locked return this HTTP code. 2XX
190 ## codes don't break the transactions while 4XX codes do
190 ## codes don't break the transactions while 4XX codes do
191 lock_ret_code = 423
191 lock_ret_code = 423
192
192
193
193
194 ####################################
194 ####################################
195 ### CELERY CONFIG ####
195 ### CELERY CONFIG ####
196 ####################################
196 ####################################
197 use_celery = false
197 use_celery = false
198 broker.host = localhost
198 broker.host = localhost
199 broker.vhost = rabbitmqhost
199 broker.vhost = rabbitmqhost
200 broker.port = 5672
200 broker.port = 5672
201 broker.user = rabbitmq
201 broker.user = rabbitmq
202 broker.password = qweqwe
202 broker.password = qweqwe
203
203
204 celery.imports = kallithea.lib.celerylib.tasks
204 celery.imports = kallithea.lib.celerylib.tasks
205
205
206 celery.result.backend = amqp
206 celery.result.backend = amqp
207 celery.result.dburi = amqp://
207 celery.result.dburi = amqp://
208 celery.result.serialier = json
208 celery.result.serialier = json
209
209
210 #celery.send.task.error.emails = true
210 #celery.send.task.error.emails = true
211 #celery.amqp.task.result.expires = 18000
211 #celery.amqp.task.result.expires = 18000
212
212
213 celeryd.concurrency = 2
213 celeryd.concurrency = 2
214 #celeryd.log.file = celeryd.log
214 #celeryd.log.file = celeryd.log
215 celeryd.log.level = debug
215 celeryd.log.level = debug
216 celeryd.max.tasks.per.child = 1
216 celeryd.max.tasks.per.child = 1
217
217
218 ## tasks will never be sent to the queue, but executed locally instead.
218 ## tasks will never be sent to the queue, but executed locally instead.
219 celery.always.eager = false
219 celery.always.eager = false
220
220
221 ####################################
221 ####################################
222 ### BEAKER CACHE ####
222 ### BEAKER CACHE ####
223 ####################################
223 ####################################
224 beaker.cache.data_dir=/tmp/rc/data/cache/data
224 beaker.cache.data_dir=/tmp/rc/data/cache/data
225 beaker.cache.lock_dir=/tmp/rc/data/cache/lock
225 beaker.cache.lock_dir=/tmp/rc/data/cache/lock
226
226
227 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
227 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
228
228
229 beaker.cache.super_short_term.type=memory
229 beaker.cache.super_short_term.type=memory
230 beaker.cache.super_short_term.expire=1
230 beaker.cache.super_short_term.expire=1
231 beaker.cache.super_short_term.key_length = 256
231 beaker.cache.super_short_term.key_length = 256
232
232
233 beaker.cache.short_term.type=memory
233 beaker.cache.short_term.type=memory
234 beaker.cache.short_term.expire=60
234 beaker.cache.short_term.expire=60
235 beaker.cache.short_term.key_length = 256
235 beaker.cache.short_term.key_length = 256
236
236
237 beaker.cache.long_term.type=memory
237 beaker.cache.long_term.type=memory
238 beaker.cache.long_term.expire=36000
238 beaker.cache.long_term.expire=36000
239 beaker.cache.long_term.key_length = 256
239 beaker.cache.long_term.key_length = 256
240
240
241 beaker.cache.sql_cache_short.type=memory
241 beaker.cache.sql_cache_short.type=memory
242 beaker.cache.sql_cache_short.expire=1
242 beaker.cache.sql_cache_short.expire=1
243 beaker.cache.sql_cache_short.key_length = 256
243 beaker.cache.sql_cache_short.key_length = 256
244
244
245 beaker.cache.sql_cache_med.type=memory
245 beaker.cache.sql_cache_med.type=memory
246 beaker.cache.sql_cache_med.expire=360
246 beaker.cache.sql_cache_med.expire=360
247 beaker.cache.sql_cache_med.key_length = 256
247 beaker.cache.sql_cache_med.key_length = 256
248
248
249 beaker.cache.sql_cache_long.type=file
249 beaker.cache.sql_cache_long.type=file
250 beaker.cache.sql_cache_long.expire=3600
250 beaker.cache.sql_cache_long.expire=3600
251 beaker.cache.sql_cache_long.key_length = 256
251 beaker.cache.sql_cache_long.key_length = 256
252
252
253 ####################################
253 ####################################
254 ### BEAKER SESSION ####
254 ### BEAKER SESSION ####
255 ####################################
255 ####################################
256 ## Type of storage used for the session, current types are
256 ## Type of storage used for the session, current types are
257 ## dbm, file, memcached, database, and memory.
257 ## dbm, file, memcached, database, and memory.
258 ## The storage uses the Container API
258 ## The storage uses the Container API
259 ## that is also used by the cache system.
259 ## that is also used by the cache system.
260
260
261 ## db session ##
261 ## db session ##
262 #beaker.session.type = ext:database
262 #beaker.session.type = ext:database
263 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
263 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
264 #beaker.session.table_name = db_session
264 #beaker.session.table_name = db_session
265
265
266 ## encrypted cookie client side session, good for many instances ##
266 ## encrypted cookie client side session, good for many instances ##
267 #beaker.session.type = cookie
267 #beaker.session.type = cookie
268
268
269 ## file based cookies (default) ##
269 ## file based cookies (default) ##
270 #beaker.session.type = file
270 #beaker.session.type = file
271
271
272
272
273 beaker.session.key = rhodecode
273 beaker.session.key = rhodecode
274 ## secure cookie requires AES python libraries
274 ## secure cookie requires AES python libraries
275 #beaker.session.encrypt_key = <key_for_encryption>
275 #beaker.session.encrypt_key = <key_for_encryption>
276 #beaker.session.validate_key = <validation_key>
276 #beaker.session.validate_key = <validation_key>
277
277
278 ## sets session as invalid if it haven't been accessed for given amount of time
278 ## sets session as invalid if it haven't been accessed for given amount of time
279 beaker.session.timeout = 3600
279 beaker.session.timeout = 3600
280 beaker.session.httponly = true
280 beaker.session.httponly = true
281 #beaker.session.cookie_path = /<your-prefix>
281 #beaker.session.cookie_path = /<your-prefix>
282
282
283 ## uncomment for https secure cookie
283 ## uncomment for https secure cookie
284 beaker.session.secure = false
284 beaker.session.secure = false
285
285
286 ## auto save the session to not to use .save()
286 ## auto save the session to not to use .save()
287 beaker.session.auto = False
287 beaker.session.auto = False
288
288
289 ## default cookie expiration time in seconds `true` expire at browser close ##
289 ## default cookie expiration time in seconds `true` expire at browser close ##
290 #beaker.session.cookie_expires = 3600
290 #beaker.session.cookie_expires = 3600
291
291
292
292
293 ############################
293 ############################
294 ## ERROR HANDLING SYSTEMS ##
294 ## ERROR HANDLING SYSTEMS ##
295 ############################
295 ############################
296
296
297 ####################
297 ####################
298 ### [errormator] ###
298 ### [errormator] ###
299 ####################
299 ####################
300
300
301 ## Errormator is tailored to work with RhodeCode, see
301 ## Errormator is tailored to work with RhodeCode, see
302 ## http://errormator.com for details how to obtain an account
302 ## http://errormator.com for details how to obtain an account
303 ## you must install python package `errormator_client` to make it work
303 ## you must install python package `errormator_client` to make it work
304
304
305 ## errormator enabled
305 ## errormator enabled
306 errormator = false
306 errormator = false
307
307
308 errormator.server_url = https://api.errormator.com
308 errormator.server_url = https://api.errormator.com
309 errormator.api_key = YOUR_API_KEY
309 errormator.api_key = YOUR_API_KEY
310
310
311 ## TWEAK AMOUNT OF INFO SENT HERE
311 ## TWEAK AMOUNT OF INFO SENT HERE
312
312
313 ## enables 404 error logging (default False)
313 ## enables 404 error logging (default False)
314 errormator.report_404 = false
314 errormator.report_404 = false
315
315
316 ## time in seconds after request is considered being slow (default 1)
316 ## time in seconds after request is considered being slow (default 1)
317 errormator.slow_request_time = 1
317 errormator.slow_request_time = 1
318
318
319 ## record slow requests in application
319 ## record slow requests in application
320 ## (needs to be enabled for slow datastore recording and time tracking)
320 ## (needs to be enabled for slow datastore recording and time tracking)
321 errormator.slow_requests = true
321 errormator.slow_requests = true
322
322
323 ## enable hooking to application loggers
323 ## enable hooking to application loggers
324 # errormator.logging = true
324 # errormator.logging = true
325
325
326 ## minimum log level for log capture
326 ## minimum log level for log capture
327 # errormator.logging.level = WARNING
327 # errormator.logging.level = WARNING
328
328
329 ## send logs only from erroneous/slow requests
329 ## send logs only from erroneous/slow requests
330 ## (saves API quota for intensive logging)
330 ## (saves API quota for intensive logging)
331 errormator.logging_on_error = false
331 errormator.logging_on_error = false
332
332
333 ## list of additonal keywords that should be grabbed from environ object
333 ## list of additonal keywords that should be grabbed from environ object
334 ## can be string with comma separated list of words in lowercase
334 ## can be string with comma separated list of words in lowercase
335 ## (by default client will always send following info:
335 ## (by default client will always send following info:
336 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
336 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
337 ## start with HTTP* this list be extended with additional keywords here
337 ## start with HTTP* this list be extended with additional keywords here
338 errormator.environ_keys_whitelist =
338 errormator.environ_keys_whitelist =
339
339
340
340
341 ## list of keywords that should be blanked from request object
341 ## list of keywords that should be blanked from request object
342 ## can be string with comma separated list of words in lowercase
342 ## can be string with comma separated list of words in lowercase
343 ## (by default client will always blank keys that contain following words
343 ## (by default client will always blank keys that contain following words
344 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
344 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
345 ## this list be extended with additional keywords set here
345 ## this list be extended with additional keywords set here
346 errormator.request_keys_blacklist =
346 errormator.request_keys_blacklist =
347
347
348
348
349 ## list of namespaces that should be ignores when gathering log entries
349 ## list of namespaces that should be ignores when gathering log entries
350 ## can be string with comma separated list of namespaces
350 ## can be string with comma separated list of namespaces
351 ## (by default the client ignores own entries: errormator_client.client)
351 ## (by default the client ignores own entries: errormator_client.client)
352 errormator.log_namespace_blacklist =
352 errormator.log_namespace_blacklist =
353
353
354
354
355 ################
355 ################
356 ### [sentry] ###
356 ### [sentry] ###
357 ################
357 ################
358
358
359 ## sentry is a alternative open source error aggregator
359 ## sentry is a alternative open source error aggregator
360 ## you must install python packages `sentry` and `raven` to enable
360 ## you must install python packages `sentry` and `raven` to enable
361
361
362 sentry.dsn = YOUR_DNS
362 sentry.dsn = YOUR_DNS
363 sentry.servers =
363 sentry.servers =
364 sentry.name =
364 sentry.name =
365 sentry.key =
365 sentry.key =
366 sentry.public_key =
366 sentry.public_key =
367 sentry.secret_key =
367 sentry.secret_key =
368 sentry.project =
368 sentry.project =
369 sentry.site =
369 sentry.site =
370 sentry.include_paths =
370 sentry.include_paths =
371 sentry.exclude_paths =
371 sentry.exclude_paths =
372
372
373
373
374 ################################################################################
374 ################################################################################
375 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
375 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
376 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
376 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
377 ## execute malicious code after an exception is raised. ##
377 ## execute malicious code after an exception is raised. ##
378 ################################################################################
378 ################################################################################
379 set debug = false
379 set debug = false
380
380
381 ##################################
381 ##################################
382 ### LOGVIEW CONFIG ###
382 ### LOGVIEW CONFIG ###
383 ##################################
383 ##################################
384 logview.sqlalchemy = #faa
384 logview.sqlalchemy = #faa
385 logview.pylons.templating = #bfb
385 logview.pylons.templating = #bfb
386 logview.pylons.util = #eee
386 logview.pylons.util = #eee
387
387
388 #########################################################
388 #########################################################
389 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
389 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
390 #########################################################
390 #########################################################
391 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode_test.sqlite
391 sqlalchemy.db1.url = sqlite:///%(here)s/kallithea_test.sqlite
392 #sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode_test
392 #sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/kallithea_test
393 #sqlalchemy.db1.url = mysql://root:qwe@localhost/rhodecode_test
393 #sqlalchemy.db1.url = mysql://root:qwe@localhost/kallithea_test
394 sqlalchemy.db1.echo = false
394 sqlalchemy.db1.echo = false
395 sqlalchemy.db1.pool_recycle = 3600
395 sqlalchemy.db1.pool_recycle = 3600
396 sqlalchemy.db1.convert_unicode = true
396 sqlalchemy.db1.convert_unicode = true
397
397
398 ################################
398 ################################
399 ### LOGGING CONFIGURATION ####
399 ### LOGGING CONFIGURATION ####
400 ################################
400 ################################
401 [loggers]
401 [loggers]
402 keys = root, routes, rhodecode, sqlalchemy, beaker, templates, whoosh_indexer
402 keys = root, routes, rhodecode, sqlalchemy, beaker, templates, whoosh_indexer
403
403
404 [handlers]
404 [handlers]
405 keys = console, console_sql
405 keys = console, console_sql
406
406
407 [formatters]
407 [formatters]
408 keys = generic, color_formatter, color_formatter_sql
408 keys = generic, color_formatter, color_formatter_sql
409
409
410 #############
410 #############
411 ## LOGGERS ##
411 ## LOGGERS ##
412 #############
412 #############
413 [logger_root]
413 [logger_root]
414 level = DEBUG
414 level = DEBUG
415 handlers = console
415 handlers = console
416
416
417 [logger_routes]
417 [logger_routes]
418 level = DEBUG
418 level = DEBUG
419 handlers =
419 handlers =
420 qualname = routes.middleware
420 qualname = routes.middleware
421 ## "level = DEBUG" logs the route matched and routing variables.
421 ## "level = DEBUG" logs the route matched and routing variables.
422 propagate = 1
422 propagate = 1
423
423
424 [logger_beaker]
424 [logger_beaker]
425 level = DEBUG
425 level = DEBUG
426 handlers =
426 handlers =
427 qualname = beaker.container
427 qualname = beaker.container
428 propagate = 1
428 propagate = 1
429
429
430 [logger_templates]
430 [logger_templates]
431 level = INFO
431 level = INFO
432 handlers =
432 handlers =
433 qualname = pylons.templating
433 qualname = pylons.templating
434 propagate = 1
434 propagate = 1
435
435
436 [logger_rhodecode]
436 [logger_rhodecode]
437 level = DEBUG
437 level = DEBUG
438 handlers =
438 handlers =
439 qualname = rhodecode
439 qualname = rhodecode
440 propagate = 1
440 propagate = 1
441
441
442 [logger_sqlalchemy]
442 [logger_sqlalchemy]
443 level = ERROR
443 level = ERROR
444 handlers = console
444 handlers = console
445 qualname = sqlalchemy.engine
445 qualname = sqlalchemy.engine
446 propagate = 0
446 propagate = 0
447
447
448 [logger_whoosh_indexer]
448 [logger_whoosh_indexer]
449 level = DEBUG
449 level = DEBUG
450 handlers =
450 handlers =
451 qualname = whoosh_indexer
451 qualname = whoosh_indexer
452 propagate = 1
452 propagate = 1
453
453
454 ##############
454 ##############
455 ## HANDLERS ##
455 ## HANDLERS ##
456 ##############
456 ##############
457
457
458 [handler_console]
458 [handler_console]
459 class = StreamHandler
459 class = StreamHandler
460 args = (sys.stderr,)
460 args = (sys.stderr,)
461 level = NOTSET
461 level = NOTSET
462 formatter = generic
462 formatter = generic
463
463
464 [handler_console_sql]
464 [handler_console_sql]
465 class = StreamHandler
465 class = StreamHandler
466 args = (sys.stderr,)
466 args = (sys.stderr,)
467 level = WARN
467 level = WARN
468 formatter = generic
468 formatter = generic
469
469
470 ################
470 ################
471 ## FORMATTERS ##
471 ## FORMATTERS ##
472 ################
472 ################
473
473
474 [formatter_generic]
474 [formatter_generic]
475 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
475 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
476 datefmt = %Y-%m-%d %H:%M:%S
476 datefmt = %Y-%m-%d %H:%M:%S
477
477
478 [formatter_color_formatter]
478 [formatter_color_formatter]
479 class=kallithea.lib.colored_formatter.ColorFormatter
479 class=kallithea.lib.colored_formatter.ColorFormatter
480 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
480 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
481 datefmt = %Y-%m-%d %H:%M:%S
481 datefmt = %Y-%m-%d %H:%M:%S
482
482
483 [formatter_color_formatter_sql]
483 [formatter_color_formatter_sql]
484 class=kallithea.lib.colored_formatter.ColorFormatterSql
484 class=kallithea.lib.colored_formatter.ColorFormatterSql
485 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
485 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
486 datefmt = %Y-%m-%d %H:%M:%S
486 datefmt = %Y-%m-%d %H:%M:%S
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now