diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-01-16 18:02:09 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-01-16 18:02:09 +0200 |
commit | 21bc41c6ee9995a821900378e933e08e4e5214bc (patch) | |
tree | fd23fbdcd61e1a920066f29f4ccd343ece336f60 /lib | |
parent | dba982403b7b894d2096ea61b89a247060eefe57 (diff) | |
download | gitlab-ce-21bc41c6ee9995a821900378e933e08e4e5214bc.tar.gz |
Add support of base64 encoded content
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/satellite/files/edit_file_action.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/satellite/files/file_action.rb | 8 | ||||
-rw-r--r-- | lib/gitlab/satellite/files/new_file_action.rb | 4 |
3 files changed, 13 insertions, 4 deletions
diff --git a/lib/gitlab/satellite/files/edit_file_action.rb b/lib/gitlab/satellite/files/edit_file_action.rb index f410ecb7984..cbdf70f7d12 100644 --- a/lib/gitlab/satellite/files/edit_file_action.rb +++ b/lib/gitlab/satellite/files/edit_file_action.rb @@ -10,7 +10,7 @@ module Gitlab # Returns false if committing the change fails # Returns false if pushing from the satellite to bare repo failed or was rejected # Returns true otherwise - def commit!(content, commit_message) + def commit!(content, commit_message, encoding) in_locked_and_timed_satellite do |repo| prepare_satellite!(repo) @@ -26,7 +26,8 @@ module Gitlab return false end - File.open(file_path_in_satellite, 'w') { |f| f.write(content) } + # Write file + write_file(file_path_in_satellite, content, encoding) # commit the changes # will raise CommandFailed when commit fails diff --git a/lib/gitlab/satellite/files/file_action.rb b/lib/gitlab/satellite/files/file_action.rb index 0f7afde647d..7701a6d5d60 100644 --- a/lib/gitlab/satellite/files/file_action.rb +++ b/lib/gitlab/satellite/files/file_action.rb @@ -12,6 +12,14 @@ module Gitlab def safe_path?(path) File.absolute_path(path) == path end + + def write_file(abs_file_path, content, file_encoding = 'text') + if file_encoding == 'base64' + File.open(abs_file_path, 'wb') { |f| f.write(Base64.decode64(content)) } + else + File.open(abs_file_path, 'w') { |f| f.write(content) } + end + end end end end diff --git a/lib/gitlab/satellite/files/new_file_action.rb b/lib/gitlab/satellite/files/new_file_action.rb index 57d101ff535..15e9b7a6f77 100644 --- a/lib/gitlab/satellite/files/new_file_action.rb +++ b/lib/gitlab/satellite/files/new_file_action.rb @@ -9,7 +9,7 @@ module Gitlab # Returns false if committing the change fails # Returns false if pushing from the satellite to bare repo failed or was rejected # Returns true otherwise - def commit!(content, commit_message) + def commit!(content, commit_message, encoding) in_locked_and_timed_satellite do |repo| prepare_satellite!(repo) @@ -29,7 +29,7 @@ module Gitlab FileUtils.mkdir_p(dir_name_in_satellite) # Write file - File.open(file_path_in_satellite, 'w') { |f| f.write(content) } + write_file(file_path_in_satellite, content, encoding) # add new file repo.add(file_path_in_satellite) |