Revision 437:102056ec2de9

View differences:

app/controllers/sys_controller.rb
69 69
    render :nothing => true, :status => 404
70 70
  end
71 71

  
72
  def clear_repository_cache
73
    project = Project.find(params[:id])
74
    if project.repository
75
      project.repository.clear_cache
76
    end
77
    render :nothing => true, :status => 200
78
  rescue ActiveRecord::RecordNotFound
79
    render :nothing => true, :status => 404
80
  end
81
  
72 82
  def set_embedded_active
73 83
    project = Project.find(params[:id])
74 84
    mods = project.enabled_modules
app/models/repository.rb
203 203
    nil
204 204
  end
205 205
  
206
  def clear_cache
207
    clear_changesets
208
  end
209

  
206 210
  private
207 211
  
208 212
  def before_save
config/routes.rb
237 237
  map.with_options :controller => 'sys' do |sys|
238 238
    sys.connect 'sys/projects.:format', :action => 'projects', :conditions => {:method => :get}
239 239
    sys.connect 'sys/projects/:id/repository.:format', :action => 'create_project_repository', :conditions => {:method => :post}
240
    sys.connect 'sys/projects/:id/external-repository.:format', :action => 'get_external_repo_url', :conditions => {:method => :get}
240
    sys.connect 'sys/projects/:id/external_repository.:format', :action => 'get_external_repo_url', :conditions => {:method => :get}
241 241
    sys.connect 'sys/projects/:id/embedded.:format', :action => 'set_embedded_active', :conditions => { :method => :post }
242
    sys.connect 'sys/projects/:id/repository_cache.:format', :action => 'clear_repository_cache', :conditions => {:method => :post}
242 243
  end
243 244
 
244 245
  # Install the default route as the lowest priority.
extra/soundsoftware/convert-external-repos.rb
62 62
$http_pass    = ''
63 63
$test         = false
64 64

  
65
$mirrordir    = '/var/mirror'
66

  
65 67
def log(text, options={})
66 68
  level = options[:level] || 0
67 69
  puts text unless $quiet or level > $verbose
......
168 170
  end
169 171

  
170 172
  system($command, project.identifier, repos_path, external_url)
173
  
174
  $cache_clearance_file = File.join($mirrordir, project.identifier, 'url_changed')
175
  if File.file?($cache_clearance_file)
176
    log("\tproject repo url has changed, requesting cache clearance")
177
    if project.post(:repository_cache, :key => $api_key)
178
      File.delete($cache_clearance_file)
179
    end
180
  end
171 181

  
172 182
end
173 183
  
extra/soundsoftware/update-external-repo.sh
68 68
successfile="$project_mirror/last_successful_url"
69 69
if [ -f "$successfile" ]; then
70 70
    last=$(cat "$successfile")
71
    if [ x"$last" == x"$remote_repo" ]; then
71
    if [ x"$last" = x"$remote_repo" ]; then
72 72
	echo "$$: Remote URL is unchanged from last successful update"
73 73
    else
74 74
	echo "$$: Remote URL has changed since last successful update:"
......
78 78
	mv "$project_repo_mirror" "$project_repo_mirror"."$suffix"
79 79
	mv "$local_repo" "$local_repo"."$suffix"
80 80
	mv "$successfile" "$successfile"."$suffix"
81
	touch "$project_mirror/url_changed"
81 82
    fi
82 83
fi
83 84

  

Also available in: Unified diff