Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
a01e3b49
Commit
a01e3b49
authored
Dec 30, 2009
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change naming of local patch-related branches and unify
the git-status checking into a library.
parent
2b2a4738
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
72 additions
and
60 deletions
+72
-60
branch-from-patch
packaging/branch-from-patch
+7
-10
git-status.pl
packaging/git-status.pl
+48
-0
patch-update
packaging/patch-update
+13
-24
release-rsync
packaging/release-rsync
+4
-26
No files found.
packaging/branch-from-patch
View file @
a01e3b49
...
...
@@ -16,7 +16,7 @@ use Getopt::Long;
my
%
local_branch
;
open
PIPE
,
'-|'
,
'git branch -l'
or
die
"Unable to fork: $!\n"
;
while
(
<
PIPE
>
)
{
if
(
m# patch/
(.*)#
)
{
if
(
m# patch/
\Q$master_branch\E/(.*)#o
)
{
$local_branch
{
$1
}
=
1
;
}
}
...
...
@@ -24,17 +24,14 @@ close PIPE;
if
(
$delete_local_branches
)
{
foreach
my
$name
(
sort
keys
%
local_branch
)
{
my
$branch
=
"patch/$name"
;
my
$branch
=
"patch/$
master_branch/$
name"
;
system
'git'
,
'branch'
,
'-D'
,
$branch
and
exit
1
;
}
%
local_branch
=
(
);
}
open
IN
,
'-|'
,
'git status'
or
die
$!
;
my
$status
=
join
(
''
,
<
IN
>
);
close
IN
;
die
"The checkout is not clean:\n"
,
$status
unless
$status
=~
/\nnothing to commit \(working directory clean\)/
;
die
"The checkout is not on the $master_branch branch.\n"
unless
$status
=~
/^# On branch $master_branch\n/
;
require
'packaging/git-status.pl'
;
check_git_state
(
$master_branch
,
!
$skip_branch_check
,
1
);
my
@patch_list
;
foreach
(
@ARGV
)
{
...
...
@@ -121,10 +118,10 @@ sub create_branch
$parent_branch
=
$commit
if
defined
$commit
;
}
else
{
create_branch
(
"$where/$parent.diff"
);
$parent_branch
=
"patch/$parent"
;
$parent_branch
=
"patch/$
master_branch/$
parent"
;
}
my
$branch
=
"patch/$name"
;
my
$branch
=
"patch/$
master_branch/$
name"
;
print
"\n"
,
'='
x
64
,
"\nProcessing $branch ($parent_branch)\n"
;
if
(
$local_branch
{
$name
})
{
...
...
@@ -176,7 +173,7 @@ Options:
-b, --branch=BRANCH Create branches relative to BRANCH if no "based-on"
header was found in the patch file.
--skip-check Skip the check that ensures starting with a clean branch.
--delete Delete all the local patch/* branches, not just the ones
--delete Delete all the local patch/
BASE/
* branches, not just the ones
that are being recreated.
-h, --help Output this help message.
EOT
...
...
packaging/git-status.pl
0 → 100644
View file @
a01e3b49
# Do some git-status checking for the current dir and (optionally)
# the patches dir.
sub
check_git_state
{
my
(
$master_branch
,
$fatal_unless_clean
,
$check_patches_dir
)
=
@_
;
my
(
$cur_branch
)
=
check_git_status
(
$fatal_unless_clean
);
if
(
$cur_branch
ne
$master_branch
)
{
print
"The checkout is not on the $master_branch branch.\n"
;
exit
1
if
$master_branch
ne
'master'
;
print
"Do you want me to continue with --branch=$cur_branch? [n] "
;
$_
=
<
STDIN
>
;
exit
1
unless
/^y/i
;
$_
[
0
]
=
$master_branch
=
$cur_branch
;
# Updates caller's $master_branch too.
}
if
(
$check_patches_dir
&&
-
d
'patches/.git'
)
{
(
$cur_branch
)
=
check_git_status
(
$fatal_unless_clean
,
'patches'
);
if
(
$cur_branch
ne
$master_branch
)
{
print
"The *patches* checkout is on branch $cur_branch, not branch $master_branch.\n"
;
print
"Do you want to change it to branch $master_branch? [n] "
;
$_
=
<
STDIN
>
;
exit
1
unless
/^y/i
;
system
"cd patches && git checkout '$master_branch'"
;
}
}
}
sub
check_git_status
{
my
(
$fatal_unless_clean
,
$subdir
)
=
@_
;
$subdir
=
'.'
unless
defined
$subdir
;
my
$status
=
`cd '$subdir' && git status`
;
my
$is_clean
=
$status
=~
/\nnothing to commit \(working directory clean\)/
;
my
(
$cur_branch
)
=
$status
=~
/^# On branch (.+)\n/
;
if
(
$fatal_unless_clean
&&
!
$is_clean
)
{
if
(
$subdir
eq
'.'
)
{
$subdir
=
''
;
}
else
{
$subdir
=
" *$subdir*"
;
}
die
"The$subdir checkout is not clean:\n"
,
$status
;
}
(
$cur_branch
,
$is_clean
,
$status
);
}
1
;
packaging/patch-update
View file @
a01e3b49
#!/usr/bin/perl
# This script is used to turn one or more of the "patch/*" branches
# This script is used to turn one or more of the "patch/
BASE/
*" branches
# into one or more diffs in the "patches" directory. Pass the option
# --gen if you want generated files in the diffs. Pass the name of
# one or more diffs if you want to just update a subset of all the
...
...
@@ -31,10 +31,8 @@ if (defined $incl_generated_files) {
die
"No '$patches_dir' directory was found.\n"
unless
-
d
$patches_dir
;
die
"No '.git' directory present in the current dir.\n"
unless
-
d
'.git'
;
my
(
$status
,
$is_clean
,
$starting_branch
)
=
&
check_git_status
;
if
(
!
$skip_branch_check
&&
!
$is_clean
)
{
die
"The checkout is not clean:\n"
,
$status
;
}
require
'packaging/git-status.pl'
;
check_git_state
(
$master_branch
,
!
$skip_branch_check
,
1
);
my
$master_commit
;
open
PIPE
,
'-|'
,
"git log -1 --no-color $master_branch"
or
die
$!
;
...
...
@@ -72,7 +70,7 @@ my %patches;
# Start by finding all patches so that we can load all possible parents.
open(PIPE, '-|', 'git', 'branch', '-l') or die $!;
while (<PIPE>) {
if (m# patch/
(.*)#
) {
if (m# patch/
\Q$master_branch\E/(.*)#o
) {
$patches{$1} = 1;
}
}
...
...
@@ -82,7 +80,7 @@ my @patches = sort keys %patches;
my(%parent, %description);
foreach my $patch (@patches) {
my $branch = "
patch
/
$patch
";
my $branch = "
patch
/$
master_branch/
$
patch
";
my $desc = '';
open(PIPE, '-|', 'git', 'diff', '-U1000', "
$master_branch
...
$branch
", '--', "
PATCH
.
$patch
") or die $!;
while (<PIPE>) {
...
...
@@ -126,7 +124,7 @@ if ($incl_generated_files) {
}
sleep 1 while $last_touch >= time;
system "
git
checkout
$
starting
_branch
" and exit 1;
system "
git
checkout
$
master
_branch
" and exit 1;
exit;
...
...
@@ -141,7 +139,7 @@ sub update_patch
unless ($completed{$parent}++) {
update_patch($parent);
}
$based_on = $parent = "
patch
/
$parent
";
$based_on = $parent = "
patch
/$
master_branch/
$
parent
";
} else {
$parent = $master_branch;
$based_on = $master_commit;
...
...
@@ -150,12 +148,13 @@ sub update_patch
print "
========
$patch
========\
n
";
sleep 1 while $incl_generated_files && $last_touch >= time;
system "
git
checkout
patch
/
$patch
" and return 0;
system "
git
checkout
patch
/$
master_branch/
$
patch
" and return 0;
my $ok = system("
git
merge $based
_on
") == 0;
if (!$ok || $launch_shell) {
my($parent_dir) = $parent =~ m{([^/]+)$};
print qq|"
git
merge $based_on" incomplete -- please
fix
.\
n
|
if
!
$ok
;
$ENV
{
PS1
}
=
"[$parent
] patch/
$patch: "
;
$ENV
{
PS1
}
=
"[$parent
_dir]
$patch: "
;
while
(
1
)
{
if
(
system
(
$ENV
{
SHELL
})
!=
0
)
{
print
"Abort? [n/y] "
;
...
...
@@ -163,7 +162,7 @@ sub update_patch
next
unless
/^y/i
;
return
0
;
}
(
$status
,
$is_clean
)
=
&
check_git_status
;
my
(
$cur_branch
,
$is_clean
,
$status
)
=
check_git_status
(
0
)
;
last
if
$is_clean
;
print
$status
;
}
...
...
@@ -214,27 +213,17 @@ sub update_patch
exit
;
sub
check_git_status
{
open
(
IN
,
'-|'
,
'git status'
)
or
die
$!
;
my
$status
=
join
(
''
,
<
IN
>
);
close
IN
;
my
$is_clean
=
$status
=~
/\nnothing to commit \(working directory clean\)/
;
my
(
$starting_branch
)
=
$status
=~
/^# On branch (.+)\n/
;
(
$status
,
$is_clean
,
$starting_branch
);
}
sub
usage
{
die
<<EOT;
Usage: patch-update [OPTIONS] [patches/DIFF...]
Options:
-b, --branch=BRANCH The master branch to merge into the patch/* branches.
-b, --branch=BRANCH The master branch to merge into the patch/
BASE/
* branches.
--gen[=DIR] Include generated files. Optional destination DIR
arg overrides the default of using the "patches" dir.
--skip-check Skip the check that ensures starting with a clean branch.
-s, --shell Launch a shell for every patch/* branch updated, not
-s, --shell Launch a shell for every patch/
BASE/
* branch updated, not
just when a conflict occurs.
-h, --help Output this help message.
EOT
...
...
packaging/release-rsync
View file @
a01e3b49
...
...
@@ -61,30 +61,8 @@ die "There is no .git dir in the current directory.\n" unless -d '.git';
die
"'a' must not exist in the current directory.\n"
if
-
e
'a'
;
die
"'b' must not exist in the current directory.\n"
if
-
e
'b'
;
my
$status
=
`git status`
;
die
"The checkout is not clean:\n"
,
$status
unless
$status
=~
/\nnothing to commit \(working directory clean\)/
;
my
(
$cur_branch
)
=
$status
=~
/^# On branch (.+)\n/
;
if
(
$cur_branch
ne
$master_branch
)
{
print
"The checkout is not on the $master_branch branch.\n"
;
exit
1
if
$master_branch
ne
'master'
;
print
"Do you want to release branch $cur_branch? [n] "
;
$_
=
<
STDIN
>
;
exit
1
unless
/^y/i
;
$master_branch
=
$cur_branch
;
}
if
(
-
d
'patches/.git'
)
{
$status
=
`cd patches && git status`
;
die
"The *patches* checkout is not clean:\n"
,
$status
unless
$status
=~
/\nnothing to commit \(working directory clean\)/
;
(
$cur_branch
)
=
$status
=~
/^# On branch (.+)\n/
;
if
(
$cur_branch
ne
$master_branch
)
{
print
"The *patches* checkout is on branch $cur_branch, not branch $master_branch.\n"
;
print
"Do you want to change it to branch $master_branch? [n] "
;
$_
=
<
STDIN
>
;
exit
1
unless
/^y/i
;
system
"cd patches && git checkout '$master_branch'"
;
}
}
require
'packaging/git-status.pl'
;
check_git_state
(
$master_branch
,
1
,
1
);
my
$confversion
;
open
(
IN
,
'<'
,
'configure.in'
)
or
die
$!
;
...
...
@@ -285,7 +263,7 @@ print $break, <<EOT;
About to:
- commit all version changes
- merge the $master_branch branch into the patch/* branches
- merge the $master_branch branch into the patch/
$master_branch/
* branches
- update the files in the "patches" dir and OPTIONALLY
(if you type 'y') to launch a shell for each patch
...
...
@@ -299,7 +277,7 @@ print "Updating files in \"patches\" dir ...\n";
system
"packaging/patch-update --branch=$master_branch"
;
if
(
$ans
=~
/^y/i
)
{
print
"\nVisiting all \"patch/*\" branches ...\n"
;
print
"\nVisiting all \"patch/
$master_branch/
*\" branches ...\n"
;
system
"packaging/patch-update --branch=$master_branch --shell"
;
}
...
...
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