Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
657065b7
Commit
657065b7
authored
Jan 08, 2018
by
Kim "BKC" Carlbäcker
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Client-prep Gitlab::Git::Repository#write_ref
parent
df744610
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
11 deletions
+19
-11
app/models/project.rb
app/models/project.rb
+1
-1
app/models/repository.rb
app/models/repository.rb
+1
-5
lib/gitlab/git/repository.rb
lib/gitlab/git/repository.rb
+15
-2
spec/models/project_spec.rb
spec/models/project_spec.rb
+2
-3
No files found.
app/models/project.rb
View file @
657065b7
...
...
@@ -1149,7 +1149,7 @@ class Project < ActiveRecord::Base
def
change_head
(
branch
)
if
repository
.
branch_exists?
(
branch
)
repository
.
before_change_head
repository
.
write_ref
(
'HEAD'
,
"refs/heads/
#{
branch
}
"
)
repository
.
raw_repository
.
write_ref
(
'HEAD'
,
"refs/heads/
#{
branch
}
"
,
shell:
false
)
repository
.
copy_gitattributes
(
branch
)
repository
.
after_change_head
reload_default_branch
...
...
app/models/repository.rb
View file @
657065b7
...
...
@@ -256,7 +256,7 @@ class Repository
# This will still fail if the file is corrupted (e.g. 0 bytes)
begin
write_ref
(
keep_around_ref_name
(
sha
),
sha
)
raw_repository
.
write_ref
(
keep_around_ref_name
(
sha
),
sha
,
shell:
false
)
rescue
Rugged
::
ReferenceError
=>
ex
Rails
.
logger
.
error
"Unable to create
#{
REF_KEEP_AROUND
}
reference for repository
#{
path
}
:
#{
ex
}
"
rescue
Rugged
::
OSError
=>
ex
...
...
@@ -270,10 +270,6 @@ class Repository
ref_exists?
(
keep_around_ref_name
(
sha
))
end
def
write_ref
(
ref_path
,
sha
)
rugged
.
references
.
create
(
ref_path
,
sha
,
force:
true
)
end
def
diverging_commit_counts
(
branch
)
root_ref_hash
=
raw_repository
.
commit
(
root_ref
).
id
cache
.
fetch
(
:"diverging_commit_counts_
#{
branch
.
name
}
"
)
do
...
...
lib/gitlab/git/repository.rb
View file @
657065b7
...
...
@@ -1103,14 +1103,27 @@ module Gitlab
end
end
def
write_ref
(
ref_path
,
ref
)
def
write_ref
(
ref_path
,
ref
,
old_ref:
nil
,
shell:
true
)
if
shell
shell_write_ref
(
ref_path
,
ref
,
old_ref
)
else
rugged_write_ref
(
ref_path
,
ref
)
end
end
def
shell_write_ref
(
ref_path
,
ref
,
old_ref
)
raise
ArgumentError
,
"invalid ref_path
#{
ref_path
.
inspect
}
"
if
ref_path
.
include?
(
' '
)
raise
ArgumentError
,
"invalid ref
#{
ref
.
inspect
}
"
if
ref
.
include?
(
"
\x00
"
)
raise
ArgumentError
,
"invalid old_ref
#{
old_ref
.
inspect
}
"
if
!
old_ref
.
nil?
&&
old_ref
.
include?
(
"
\x00
"
)
input
=
"update
#{
ref_path
}
\x00
#{
ref
}
\x00\x00
"
input
=
"update
#{
ref_path
}
\x00
#{
ref
}
\x00
#{
old_ref
}
\x00
"
run_git!
(
%w[update-ref --stdin -z]
)
{
|
stdin
|
stdin
.
write
(
input
)
}
end
def
rugged_write_ref
(
ref_path
,
ref
)
rugged
.
references
.
create
(
ref_path
,
ref
,
force:
true
)
end
def
fetch_ref
(
source_repository
,
source_ref
:,
target_ref
:)
Gitlab
::
Git
.
check_namespace!
(
source_repository
)
source_repository
=
RemoteRepository
.
new
(
source_repository
)
unless
source_repository
.
is_a?
(
RemoteRepository
)
...
...
spec/models/project_spec.rb
View file @
657065b7
...
...
@@ -1871,9 +1871,8 @@ describe Project do
end
it
'creates the new reference with rugged'
do
expect
(
project
.
repository
.
rugged
.
references
).
to
receive
(
:create
).
with
(
'HEAD'
,
"refs/heads/
#{
project
.
default_branch
}
"
,
force:
true
)
expect
(
project
.
repository
.
raw_repository
).
to
receive
(
:write_ref
).
with
(
'HEAD'
,
"refs/heads/
#{
project
.
default_branch
}
"
,
shell:
false
)
project
.
change_head
(
project
.
default_branch
)
end
...
...
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