BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
ffcf1565
Commit
ffcf1565
authored
Dec 21, 2016
by
Douwe Maan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dz-rename-invalid-groups' into 'master'
Rename groups with .git in the end of the path Closes #25862 See merge request !8199
parents
f603e423
21153f3e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
88 additions
and
2 deletions
+88
-2
dz-rename-invalid-groups.yml
changelogs/unreleased/dz-rename-invalid-groups.yml
+4
-0
20161220141214_remove_dot_git_from_group_names.rb
db/migrate/20161220141214_remove_dot_git_from_group_names.rb
+82
-0
schema.rb
db/schema.rb
+2
-2
No files found.
changelogs/unreleased/dz-rename-invalid-groups.yml
0 → 100644
View file @
ffcf1565
---
title
:
Rename groups with .git in the end of the path
merge_request
:
8199
author
:
db/migrate/20161220141214_remove_dot_git_from_group_names.rb
0 → 100644
View file @
ffcf1565
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class
RemoveDotGitFromGroupNames
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
include
Gitlab
::
ShellAdapter
# Set this constant to true if this migration requires downtime.
DOWNTIME
=
false
def
up
invalid_groups
.
each
do
|
group
|
path_was
=
group
[
'path'
]
path_was_wildcard
=
quote_string
(
"
#{
path_was
}
/%"
)
path
=
quote_string
(
rename_path
(
path_was
))
move_namespace
(
group
[
'id'
],
path_was
,
path
)
execute
"UPDATE routes SET path = '
#{
path
}
' WHERE source_type = 'Namespace' AND source_id =
#{
group
[
'id'
]
}
"
execute
"UPDATE namespaces SET path = '
#{
path
}
' WHERE id =
#{
group
[
'id'
]
}
"
select_all
(
"SELECT id, path FROM routes WHERE path LIKE '
#{
path_was_wildcard
}
'"
).
each
do
|
route
|
new_path
=
"
#{
path
}
/
#{
route
[
'path'
].
split
(
'/'
).
last
}
"
execute
"UPDATE routes SET path = '
#{
new_path
}
' WHERE id =
#{
route
[
'id'
]
}
"
end
end
end
def
down
# nothing to do here
end
private
def
invalid_groups
select_all
(
"SELECT id, path FROM namespaces WHERE type = 'Group' AND path LIKE '%.git'"
)
end
def
route_exists?
(
path
)
select_all
(
"SELECT id, path FROM routes WHERE path = '
#{
quote_string
(
path
)
}
'"
).
present?
end
# Accepts invalid path like test.git and returns test_git or
# test_git1 if test_git already taken
def
rename_path
(
path
)
# To stay closer with original name and reduce risk of duplicates
# we rename suffix instead of removing it
path
=
path
.
sub
(
/\.git\z/
,
'_git'
)
counter
=
0
base
=
path
while
route_exists?
(
path
)
counter
+=
1
path
=
"
#{
base
}#{
counter
}
"
end
path
end
def
move_namespace
(
group_id
,
path_was
,
path
)
repository_storage_paths
=
select_all
(
"SELECT distinct(repository_storage) FROM projects WHERE namespace_id =
#{
group_id
}
"
).
map
do
|
row
|
Gitlab
.
config
.
repositories
.
storages
[
row
[
'repository_storage'
]]
end
# Move the namespace directory in all storages paths used by member projects
repository_storage_paths
.
each
do
|
repository_storage_path
|
# Ensure old directory exists before moving it
gitlab_shell
.
add_namespace
(
repository_storage_path
,
path_was
)
unless
gitlab_shell
.
mv_namespace
(
repository_storage_path
,
path_was
,
path
)
Rails
.
logger
.
error
"Exception moving path
#{
repository_storage_path
}
from
#{
path_was
}
to
#{
path
}
"
# if we cannot move namespace directory we should rollback
# db changes in order to prevent out of sync between db and fs
raise
Exception
.
new
(
'namespace directory cannot be moved'
)
end
end
Gitlab
::
UploadsTransfer
.
new
.
rename_namespace
(
path_was
,
path
)
end
end
db/schema.rb
View file @
ffcf1565
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
201612
13172958
)
do
ActiveRecord
::
Schema
.
define
(
version:
201612
20141214
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -854,7 +854,7 @@ ActiveRecord::Schema.define(version: 20161213172958) do
t
.
datetime
"expires_at"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
string
"scopes"
,
default:
"--- []
\n
"
,
null:
false
t
.
string
"scopes"
,
default:
"--- []
\n
"
,
null:
false
end
add_index
"personal_access_tokens"
,
[
"token"
],
name:
"index_personal_access_tokens_on_token"
,
unique:
true
,
using: :btree
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment