Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion SynergySession.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,9 @@ def __init__(self, database, engine=None, command_name='ccm', ccm_ui_path='/dev/
else:
self.environment['CCM_ADDR'] = ccm_addr

# Get the delimiter and store it
# Get the delimiters and store them
self.delimiter = self.delim()
self.dcm_delimiter = self.dcm_delim()

def setSessionID(self, sessionID):
self.sessionID = sessionID
Expand Down Expand Up @@ -140,6 +141,10 @@ def delim(self):
self._reset_status()
return self._run(['delim']).strip()

def dcm_delim(self):
"""Returns the DCM delimiter defined in the Synergy DB"""
return self._run(['dcm','-show','-delimiter']).strip()

def stop(self):
"""Stops the current Synergy session"""
if 'CCM_ADDR' in self.environment:
Expand Down
9 changes: 5 additions & 4 deletions ccm_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,8 @@ def get_object_from_ccm(four_part_name, ccm, ccm_cache_path):
"""Try to get the object's meta data from Synergy"""
# convert the four-part-name to a synergy object:
delim = ccm.delim()
synergy_object = SynergyObject(four_part_name, delim)
dcm_delim = ccm.dcm_delim()
synergy_object = SynergyObject(four_part_name, delim, dcm_delim)
try:
res = ccm.query("name='{0}' and version='{1}' and type='{2}' and instance='{3}'".format(synergy_object.get_name(), synergy_object.get_version(), synergy_object.get_type(), synergy_object.get_instance())).format("%objectname").format("%owner").format("%status").format("%create_time").format("%task").run()
except SynergyException:
Expand All @@ -284,7 +285,7 @@ def get_object_from_ccm(four_part_name, ccm, ccm_cache_path):
for t in res[0]['task'].split(','):
if t != '<void>':
if ':task:' not in t:
tasks.append(task_to_four_part(t, delim))
tasks.append(task_to_four_part(t, delim, dcm_delim))
else:
tasks.append(t)
synergy_object.tasks = tasks
Expand Down Expand Up @@ -448,9 +449,9 @@ def get_releases(object, ccm):
return releases


def task_to_four_part(task, delim):
def task_to_four_part(task, delim, dcm_delim):
# Task four-part-name: task<tasknumber>-1:task:instance
split = task.split('#')
split = task.split(dcm_delim)
four_part = ['task', split[1], delim, '1:task:', split[0]]
return ''.join(four_part)

Expand Down
33 changes: 18 additions & 15 deletions configuration.conf.sample
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,30 @@
;
;

[global]
heads_separator=, ; Set this to allow for non-default ccm delimiter

[synergy]
database= ; database
base_project= ; starting point for initial commit in git
heads= ; comma separated list of heads to include
master= ; end project - latest release - master branch in git
max_sessions= ; max number of sessions to hammer at synergy
ccm_cache_path= ; where to store all data and meta data from synergy (lots of space is needed)
data_file= ; pickle file to store meta data for the converter (is loaded upon start, so the conversion can resume)
log_file= ;
max_recursion_depth= ; recursion depth to give up when reached, when traversing file history between two releases
skip_binary_files= ; Don't put binary files in git history
database= ; database
base_project= ; starting point for initial commit in git
heads= ; <heads_separator> separated list of heads to include
master= ; end project - latest release - master branch in git
max_sessions= ; max number of sessions to hammer at synergy
ccm_cache_path= ; where to store all data and meta data from synergy (lots of space is needed)
data_file= ; pickle file to store meta data for the converter (is loaded upon start, so the conversion can resume)
log_file= ;
max_recursion_depth= ; recursion depth to give up when reached, when traversing file history between two releases
skip_binary_files= ; Don't put binary files in git history

[history conversion]
print_graphs=False ; print png images of the different releases when converting history
email_domain= ; email domain to use when writing commit info (if not found through ldap)
print_graphs=False ; print png images of the different releases when converting history
email_domain= ; email domain to use when writing commit info (if not found through ldap)

[ldap]
username=
password=
server=

[finger] ; Find users with finger program, can run on a remote server through ssh (keys needed)
server= ; Remote server to use
user= ; User to login in as
[finger] ; Find users with finger program, can run on a remote server through ssh (keys needed)
server= ; Remote server to use
user= ; User to login in as
12 changes: 11 additions & 1 deletion load_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ def load_config_file():
config_parser = ConfigParser()
config_parser.read('configuration.conf')
config = {}
global_config = {}

""" Read the global config first """
global_config['heads_separator'] = ','
for k,v in config_parser.items('global'):
global_config[k] = v

for k, v in config_parser.items('synergy'):
if k == 'ccm_cache_path' and not v.endswith('/'):
v += '/'
Expand All @@ -44,18 +51,21 @@ def load_config_file():
if k == 'max_recursion_depth':
v = int(v)
if k == 'heads':
v = v.split(',')
v = v.split(global_config['heads_separator'])
v = [i.strip() for i in v]
if k == 'skip_binary_files':
v = config_parser.getboolean('synergy', 'skip_binary_files')
config[k]=v

for k, v in config_parser.items('history conversion'):
if k == 'print_graphs':
v = config_parser.getboolean('history conversion', 'print_graphs')
config[k]=v

if config_parser.has_section('ldap'):
for k,v in config_parser.items('ldap'):
config[k]=v

if config_parser.has_section('finger'):
config['finger'] = {}
for k,v in config_parser.items('finger'):
Expand Down