Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
ee6fe844
Unverified
Commit
ee6fe844
authored
May 26, 2020
by
Martin Liska
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new git-backport.py script.
contrib/ChangeLog: * git-backport.py: New file.
parent
fac77bd8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
60 additions
and
0 deletions
+60
-0
contrib/git-backport.py
+60
-0
No files found.
contrib/git-backport.py
0 → 100755
View file @
ee6fe844
#!/usr/bin/env python3
# Copyright (C) 2020 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
import
argparse
import
subprocess
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
(
description
=
'Backport a git revision and '
'stash all ChangeLog files.'
)
parser
.
add_argument
(
'revision'
,
help
=
'Revision'
)
args
=
parser
.
parse_args
()
r
=
subprocess
.
run
(
'git cherry-pick -x
%
s'
%
args
.
revision
,
shell
=
True
)
if
r
.
returncode
==
0
:
cmd
=
'git show --name-only --pretty="" -- "*ChangeLog" |'
\
'xargs git checkout HEAD~'
subprocess
.
check_output
(
cmd
,
shell
=
True
)
subprocess
.
check_output
(
'git commit --amend --no-edit'
,
shell
=
True
)
else
:
# 1) remove all ChangeLog files from conflicts
out
=
subprocess
.
check_output
(
'git diff --name-only --diff-filter=U'
,
shell
=
True
,
encoding
=
'utf8'
)
conflicts
=
out
.
strip
()
.
split
(
'
\n
'
)
changelogs
=
[
c
for
c
in
conflicts
if
c
.
endswith
(
'ChangeLog'
)]
if
changelogs
:
cmd
=
'git checkout --theirs
%
s'
%
'
\n
'
.
join
(
changelogs
)
subprocess
.
check_output
(
cmd
,
shell
=
True
)
# 2) remove all ChangeLog files from index
cmd
=
'git diff --name-only --diff-filter=M HEAD'
out
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
encoding
=
'utf8'
)
out
=
out
.
strip
()
.
split
(
'
\n
'
)
modified
=
[
c
for
c
in
out
if
c
.
endswith
(
'ChangeLog'
)]
for
m
in
modified
:
subprocess
.
check_output
(
'git reset
%
s'
%
m
,
shell
=
True
)
subprocess
.
check_output
(
'git checkout
%
s'
%
m
,
shell
=
True
)
# try to continue
if
len
(
conflicts
)
==
len
(
changelogs
):
subprocess
.
check_output
(
'git cherry-pick --continue'
,
shell
=
True
)
else
:
print
(
'Please resolve all remaining file conflicts.'
)
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