Modify ↓
Opened 10 years ago
Closed 10 years ago
#11851 closed defect (fixed)
Raising IntegrityError when repository sync with empty git repository
Reported by: | Jun Omae | Owned by: | Jun Omae |
---|---|---|---|
Priority: | normal | Milestone: | 1.0.3 |
Component: | plugin/git | Version: | 1.0.2 |
Severity: | normal | Keywords: | |
Cc: | Branch: | ||
Release Notes: |
Fix raising |
||
API Changes: | |||
Internal Changes: |
Description
2014-11-28 01:10:13,981 Trac[console] ERROR: Exception in trac-admin command: Traceback (most recent call last): File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/admin/console.py", line 110, in onecmd rv = cmd.Cmd.onecmd(self, line) or 0 File "/usr/lib/python2.5/cmd.py", line 218, in onecmd return self.default(line) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/admin/console.py", line 286, in default return self.cmd_mgr.execute_command(*args) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/admin/api.py", line 127, in execute_command return f(*fargs) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/versioncontrol/admin.py", line 155, in _do_sync self._sync(reponame, rev, clean=False) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/versioncontrol/admin.py", line 139, in _sync repos.sync(self._sync_feedback, clean=clean) File "/venv/trac/1.0.2/lib/python2.5/site-packages/tracopt/versioncontrol/git/git_fs.py", line 92, in sync self.save_metadata(metadata) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/versioncontrol/cache.py", line 267, in save_metadata """, (self.id, CACHE_YOUNGEST_REV, '')) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/db/util.py", line 128, in execute cursor.execute(query, params if params is not None else []) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/db/util.py", line 72, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/db/sqlite_backend.py", line 80, in execute result = PyFormatCursor.execute(self, *args) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/db/sqlite_backend.py", line 58, in execute args or []) File "/venv/trac/1.0.2/lib/python2.5/site-packages/trac/db/sqlite_backend.py", line 50, in _rollback_on_error return function(self, *args, **kwargs) IntegrityError: columns id, name are not unique
After the issue, NULL
is stored as youngest_rev
in repository
table. Instead, empty string should be used for the case.
sqlite> .nullvalue <NULL> sqlite> SELECT * FROM repository; 1|name| 1|dir|/dev/shm/empty-git 1|type|git 1|repository_dir|git:/dev/shm/empty-git 1|youngest_rev|<NULL>
How to reproduce:
$ git init --bare /dev/shm/empty-git Initialized empty Git repository in /run/shm/empty-git/ $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv config set logging log_level INFO $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv config set logging log_type file $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv config set git cached_repository enabled $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv config set components 'tracopt.versioncontrol.git.*' enabled $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv repository add '(default)' /dev/shm/empty-git git $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv repository sync '(default)' Resyncing repository history for (default)... 0 revisions cached. Done. $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv repository sync '(default)' Resyncing repository history for (default)... 0 revisions cached. Done. $ /venv/trac/1.0.2/bin/trac-admin /dev/shm/tracenv repository sync '(default)' Resyncing repository history for (default)... IntegrityError: columns id, name are not unique
Attachments (0)
Change History (1)
comment:1 by , 10 years ago
Release Notes: | modified (diff) |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Fixed in [13436] and merged to trunk in [13437].