Modify ↓
Opened 11 years ago
Closed 11 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 , 11 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].