Sanitize auto-generated repo identifier; refs #4
Redmine repo identifiers can't have any characters except: /[a-z0-9_-]/ We scan for this and turn everything else into a '-'
This commit is contained in:
parent
3a7de96736
commit
81a6fe6b02
@ -47,13 +47,13 @@ class Repository::GitRemote < Repository::Git
|
|||||||
def initialize_clone
|
def initialize_clone
|
||||||
# avoids crash in RepositoriesController#destroy
|
# avoids crash in RepositoriesController#destroy
|
||||||
return unless attributes["extra_info"]["extra_clone_url"]
|
return unless attributes["extra_info"]["extra_clone_url"]
|
||||||
|
|
||||||
p = parse(attributes["extra_info"]["extra_clone_url"])
|
p = parse(attributes["extra_info"]["extra_clone_url"])
|
||||||
self.identifier = p[:identifier] if identifier.empty?
|
self.identifier = p[:identifier] if identifier.empty?
|
||||||
self.url = PATH_PREFIX + p[:path] if url.empty?
|
self.url = PATH_PREFIX + p[:path] if url.empty?
|
||||||
|
|
||||||
err = ensure_possibly_empty_clone_exists
|
err = ensure_possibly_empty_clone_exists
|
||||||
errors.add :extra_clone_url, err if err
|
errors.add :extra_clone_url, err if err
|
||||||
end
|
end
|
||||||
|
|
||||||
# equality check ignoring trailing whitespace and slashes
|
# equality check ignoring trailing whitespace and slashes
|
||||||
@ -101,7 +101,7 @@ class Repository::GitRemote < Repository::Git
|
|||||||
.gsub(/\.git$/, '') # Remove trailing .git
|
.gsub(/\.git$/, '') # Remove trailing .git
|
||||||
ret[:host] = ret[:path].split('/').first
|
ret[:host] = ret[:path].split('/').first
|
||||||
#TODO: handle project uniqueness automatically or prompt
|
#TODO: handle project uniqueness automatically or prompt
|
||||||
ret[:identifier] = ret[:path].split('/').last.downcase
|
ret[:identifier] = ret[:path].split('/').last.downcase.gsub(/[^a-z0-9_-]/,'-')
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -118,7 +118,6 @@ class Repository::GitRemote < Repository::Git
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# Checks if host is in ~/.ssh/known_hosts, adds it if not present
|
# Checks if host is in ~/.ssh/known_hosts, adds it if not present
|
||||||
def self.add_known_host(host)
|
def self.add_known_host(host)
|
||||||
# if not found...
|
# if not found...
|
||||||
@ -138,5 +137,4 @@ class Repository::GitRemote < Repository::Git
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user