LOGIN / SIGN UP
2 Author: Claes Nästén
Date: Wed Mar 03 19:48:58 +0100 2010
Subject: Continue working on #53, CommitSet introduced for grouping.
    Introduced CommitSet for Observerability, more tests and restructuring
    to handle this extra step.

lib/septic/scm/log_git.rb
 
40 @@ -40,50 +40,47 @@
40 raise "no repository at #{@path}" if @repository.nil?
41 @revision = @repository.commits.find(:first)
42
43 # Get updates
44 # Get updates and add to the database
45 commits_data = update_branch_log
46
47 # Add commits to database
48 commits = add_commits(commits_data)
49 commit_set = add_commits(commits_data)
50
51 [@repository, commits]
52 return commit_set
53 end
54
55 private
56 # Add commits to database
57 def add_commits(commits_data)
58 commits_added = []
59
60 return nil if commits_data.empty?
61
62 commit_set = @repository.commit_sets.create(:user_id => @user.id)
63 commits_data.reverse_each do |commit_data|
64 # Split body / files
65 commit_data['body'], commit_files = parse_body_files(commit_data['body'])
66
67 # Lookup user
68 user = get_user_from_email(commit_data['email'])
69 if user
70 commit_data['user_id'] = user.id
71 end
72 add_commit(commit_set, commit_data)
73 end
74 commit_set.save
75
76 commit_set
77 end
78
79 # Add commit
80 commit = @repository.commits.create(commit_data)
81 def add_commit(commit_set, commit_data)
82 # Split body / files, lookup user and create commit
83 commit_data['body'], commit_files = parse_body_files(commit_data['body'])
84 user = get_user_from_email(commit_data['email'])
85 if user
86 commit_data['user_id'] = user.id
87 end
88 commit = commit_set.commits.create(commit_data)
89
90 # Add commit files
91 if commit.valid?
92 commit_files.each do |file|
93 commit.commit_files.create(file)
94 end
95
96 # Update commit links
97 set_revision_relations(commit)
98
99 # Keep track of added commits
100 commits_added << commit
101 else
102 raise "failed creating commit with errors %s" % commit.errors.full_messages.join('\n')
103 # Add commit files
104 if commit.valid?
105 commit_files.each do |file|
106 commit.commit_files.create(file)
107 end
108
109 # Update commit links
110 set_revision_relations(commit)
111 else
112 raise "failed creating commit with errors %s" % commit.errors.full_messages.join('\n')
113 end
114
115 commits_added
116 end
117
118 # Update branch log to current heads
...