\r
module RedmineLe\r
SVN_DIR = File.join(HOME, "subversion/repos")\r
- SVN_TEMP = File.join(HOME, "subversion/temp")\r
+ SVN_TEMPLATE = SVN_DIR + "/repository_template"\r
SVN_URL = "http://localhost:#{HTTP_PORT}/svn"\r
- SVN_FILE = "file:///" + SVN_DIR.sub(/^\//, "")\r
+\r
\r
module ProjectPatch\r
def self.included(base)\r
@repository_url ||= RedmineLe::SVN_URL + "/" + identifier\r
end\r
\r
- def local_repository_url\r
- @local_repository_url ||= RedmineLe::SVN_FILE + "/" + identifier\r
- end\r
-\r
def hook_config\r
@hook_config ||= HookConfig.new(self)\r
end\r
\r
def setup_repository\r
- begin\r
- raise unless repository_available?\r
- unless File.directory?(repository_path)\r
- raise unless system(%Q[svnadmin create "#{repository_path}"])\r
-\r
- template_path = RedmineLe::SVN_FILE + "/repository_template"\r
- target_path = RedmineLe::SVN_TEMP + "/" + identifier\r
-\r
- FileUtils.rm_rf(target_path)\r
- system(%Q[svn checkout "#{local_repository_url}" "#{target_path}"])\r
- Dir.chdir(target_path) {\r
- system(%Q[svn export --force "#{template_path}" .])\r
-\r
- Find.find(".") {|f|\r
- next if f == "."\r
- name = File.basename(f)\r
- Find.prune if name == ".svn"\r
- if name == ".svnignore"\r
- system(%Q[svn propset svn:ignore -F "#{f}" "#{File.dirname(f)}"])\r
- else\r
- system(%Q[svn add --depth=empty "#{f}"])\r
- end\r
- }\r
- system(%Q[svn commit -m "Initial repository layout"])\r
- }\r
- end\r
- rescue\r
- raise "Cannot setup repository" \r
+ unless File.directory?(repository_path)\r
+ target = RedmineLe::SVN_DIR + "/" + identifier\r
+ FileUtils.cp_r(RedmineLe::SVN_TEMPLATE, target)\r
end\r
\r
self.repository = Repository::Subversion.new(\r
:login => RedmineLeSetting.admin_account,\r
:password => RedmineLeSetting.admin_password\r
)\r
+ Repository.fetch_changesets\r
\r
%w[pre-commit.bat post-commit.bat].each {|filename|\r
File.open(repository_path + "/hooks/#{filename}", "w") {|f|\r