Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
brew
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to JiHu GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
KMSCAKKSCFKA AKFACAMADCAS
brew
Commits
06d91520
Commit
06d91520
authored
4 years ago
by
Seeker
Browse files
Options
Downloads
Patches
Plain Diff
bump-formula-pr: check duplicate PRs as early as possible
parent
df17f8a0
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Library/Homebrew/dev-cmd/bump-formula-pr.rb
+27
-16
27 additions, 16 deletions
Library/Homebrew/dev-cmd/bump-formula-pr.rb
with
27 additions
and
16 deletions
Library/Homebrew/dev-cmd/bump-formula-pr.rb
+
27
−
16
View file @
06d91520
...
...
@@ -127,6 +127,10 @@ module Homebrew
raise
FormulaUnspecifiedError
unless
formula
tap_full_name
,
origin_branch
,
previous_branch
=
use_correct_linux_tap
(
formula
)
check_open_pull_requests
(
formula
,
tap_full_name
)
new_version
=
args
.
version
check_all_pull_requests
(
formula
,
tap_full_name
,
version:
new_version
)
if
new_version
requested_spec
,
formula_spec
=
if
args
.
devel?
devel_message
=
" (devel)"
...
...
@@ -155,15 +159,16 @@ module Homebrew
new_url
.
sub
"mirrors.ocf.berkeley.edu/debian"
,
"mirrorservice.org/sites/ftp.debian.org/debian"
end
new_mirrors
||=
[
new_mirror
]
unless
new_mirror
.
nil?
new_version
=
args
.
version
old_url
=
formula_spec
.
url
old_tag
=
formula_spec
.
specs
[
:tag
]
old_formula_version
=
formula_version
(
formula
,
requested_spec
)
old_version
=
old_formula_version
.
to_s
forced_version
=
false
forced_version
=
new_version
.
present?
new_url_hash
=
if
new_url
&&
new_hash
check_all_pull_requests
(
formula
,
tap_full_name
,
url:
new_url
)
unless
new_version
true
elsif
new_tag
&&
new_revision
check_all_pull_requests
(
formula
,
tap_full_name
,
url:
old_url
,
tag:
new_tag
)
unless
new_version
false
elsif
!
hash_type
odie
"
#{
formula
}
: no --tag= or --version= argument specified!"
if
!
new_tag
&&
!
new_version
...
...
@@ -174,6 +179,7 @@ module Homebrew
and old tag are both
#{
new_tag
}
.
EOS
end
check_all_pull_requests
(
formula
,
tap_full_name
,
url:
old_url
,
tag:
new_tag
)
unless
new_version
resource_path
,
forced_version
=
fetch_resource
(
formula
,
new_version
,
old_url
,
tag:
new_tag
)
new_revision
=
Utils
.
popen_read
(
"git -C
\"
#{
resource_path
}
\"
rev-parse -q --verify HEAD"
)
new_revision
=
new_revision
.
strip
...
...
@@ -189,6 +195,7 @@ module Homebrew
#{
new_url
}
EOS
end
check_all_pull_requests
(
formula
,
tap_full_name
,
url:
new_url
)
unless
new_version
resource_path
,
forced_version
=
fetch_resource
(
formula
,
new_version
,
new_url
)
tar_file_extensions
=
%w[.tar .tb2 .tbz .tbz2 .tgz .tlz .txz .tZ]
if
tar_file_extensions
.
any?
{
|
extension
|
new_url
.
include?
extension
}
...
...
@@ -244,7 +251,7 @@ module Homebrew
]
end
backup_file
=
File
.
read
(
formula
.
path
)
unless
args
.
dry_run?
old_contents
=
File
.
read
(
formula
.
path
)
unless
args
.
dry_run?
if
new_mirrors
replacement_pairs
<<
[
...
...
@@ -307,8 +314,6 @@ module Homebrew
new_formula_version
=
formula_version
(
formula
,
requested_spec
,
new_contents
)
check_for_duplicate_pull_requests
(
formula
,
backup_file
,
tap_full_name
,
new_formula_version
.
to_s
)
if
!
new_mirrors
&&
!
formula_spec
.
mirrors
.
empty?
if
args
.
force?
opoo
"
#{
formula
}
: Removing all mirrors because a --mirror= argument was not specified."
...
...
@@ -321,13 +326,13 @@ module Homebrew
end
if
new_formula_version
<
old_formula_version
formula
.
path
.
atomic_write
(
backup_file
)
unless
args
.
dry_run?
formula
.
path
.
atomic_write
(
old_contents
)
unless
args
.
dry_run?
odie
<<~
EOS
You probably need to bump this formula manually since changing the
version from
#{
old_formula_version
}
to
#{
new_formula_version
}
would be a downgrade.
EOS
elsif
new_formula_version
==
old_formula_version
formula
.
path
.
atomic_write
(
backup_file
)
unless
args
.
dry_run?
formula
.
path
.
atomic_write
(
old_contents
)
unless
args
.
dry_run?
odie
<<~
EOS
You probably need to bump this formula manually since the new version
and old version are both
#{
new_formula_version
}
.
...
...
@@ -340,7 +345,7 @@ module Homebrew
alias_rename
.
map!
{
|
a
|
formula
.
tap
.
alias_dir
/
a
}
end
run_audit
(
formula
,
alias_rename
,
backup_file
)
run_audit
(
formula
,
alias_rename
,
old_contents
)
formula
.
path
.
parent
.
cd
do
branch
=
"
#{
formula
.
name
}
-
#{
new_formula_version
}
"
...
...
@@ -365,7 +370,7 @@ module Homebrew
remote_url
=
Utils
.
popen_read
(
"git remote get-url --push origin"
).
chomp
username
=
formula
.
tap
.
user
else
remote_url
,
username
=
forked_repo_info
(
formula
,
tap_full_name
,
backup_file
)
remote_url
,
username
=
forked_repo_info
(
formula
,
tap_full_name
,
old_contents
)
end
safe_system
"git"
,
"fetch"
,
"--unshallow"
,
"origin"
if
shallow
...
...
@@ -438,10 +443,10 @@ module Homebrew
[
resource
.
fetch
,
forced_version
]
end
def
forked_repo_info
(
formula
,
tap_full_name
,
backup_file
)
def
forked_repo_info
(
formula
,
tap_full_name
,
old_contents
)
response
=
GitHub
.
create_fork
(
tap_full_name
)
rescue
GitHub
::
AuthenticationFailedError
,
*
GitHub
.
api_errors
=>
e
formula
.
path
.
atomic_write
(
backup_file
)
formula
.
path
.
atomic_write
(
old_contents
)
odie
"Unable to fork:
#{
e
.
message
}
!"
else
# GitHub API responds immediately but fork takes a few seconds to be ready.
...
...
@@ -506,12 +511,20 @@ module Homebrew
[]
end
def
check_
for_duplicate
_pull_requests
(
formula
,
backup_file
,
tap_full_name
,
version
)
def
check_
open
_pull_requests
(
formula
,
tap_full_name
)
# check for open requests
pull_requests
=
fetch_pull_requests
(
formula
.
name
,
tap_full_name
,
state:
"open"
)
check_for_duplicate_pull_requests
(
pull_requests
)
end
def
check_all_pull_requests
(
formula
,
tap_full_name
,
version:
nil
,
url:
nil
,
tag:
nil
)
version
||=
Version
.
detect
(
url
,
tag
?
{
tag:
tag
}
:
{})
# if we haven't already found open requests, try for an exact match across all requests
pull_requests
=
fetch_pull_requests
(
"
#{
formula
.
name
}
#{
version
}
"
,
tap_full_name
)
if
pull_requests
.
blank?
check_for_duplicate_pull_requests
(
pull_requests
)
end
def
check_for_duplicate_pull_requests
(
pull_requests
)
return
if
pull_requests
.
blank?
duplicates_message
=
<<~
EOS
...
...
@@ -522,10 +535,8 @@ module Homebrew
if
args
.
force?
&&
!
args
.
quiet?
opoo
duplicates_message
elsif
!
args
.
force?
&&
args
.
quiet?
formula
.
path
.
atomic_write
(
backup_file
)
unless
args
.
dry_run?
odie
error_message
elsif
!
args
.
force?
formula
.
path
.
atomic_write
(
backup_file
)
unless
args
.
dry_run?
odie
<<~
EOS
#{
duplicates_message
.
chomp
}
#{
error_message
}
...
...
@@ -545,7 +556,7 @@ module Homebrew
[
versioned_alias
,
"
#{
name
}
@
#{
new_alias_version
}
"
]
end
def
run_audit
(
formula
,
alias_rename
,
backup_file
)
def
run_audit
(
formula
,
alias_rename
,
old_contents
)
if
args
.
dry_run?
if
args
.
no_audit?
ohai
"Skipping `brew audit`"
...
...
@@ -569,7 +580,7 @@ module Homebrew
end
return
unless
failed_audit
formula
.
path
.
atomic_write
(
backup_file
)
formula
.
path
.
atomic_write
(
old_contents
)
FileUtils
.
mv
alias_rename
.
last
,
alias_rename
.
first
if
alias_rename
.
present?
odie
"`brew audit` failed!"
end
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment