[pkg-perl-tools] 04/04: Add support to create pull requests for patches

Alex Muntada alexm-guest at moszumanska.debian.org
Fri Oct 14 18:08:43 UTC 2016


This is an automated email from the git hooks/post-receive script.

alexm-guest pushed a commit to branch forward-github-pr
in repository pkg-perl-tools.

commit 479c3891a3acbd9dca64e579dfa554e7932acc9f
Author: Alex Muntada <alexm at alexm.org>
Date:   Fri Oct 14 20:03:39 2016 +0200

    Add support to create pull requests for patches
    
    This feature permits to create pull requests in GitHub upstreams
    instead of creating issues with the patch inlined as comments.
    
    Add this to dpt.conf:
    
        export PERL5LIB=$DPT_PACKAGES/pkg-perl-tools/lib
    
    And then "dpt forward" should find modules in lib.
    
    Lots of testing needed! This is still a work in progress.
---
 scripts/forward | 76 +++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 49 insertions(+), 27 deletions(-)

diff --git a/scripts/forward b/scripts/forward
index 44b194f..5d87390 100755
--- a/scripts/forward
+++ b/scripts/forward
@@ -16,6 +16,7 @@ use Text::Wrap qw(wrap);
 use Proc::InvokeEditor;
 use MIME::Lite;
 use YAML::XS qw(LoadFile);
+use Debian::PkgPerl::GitHub;
 
 use warnings;
 use strict;
@@ -292,7 +293,7 @@ sub retrieve_bug_info {
 sub get_subject {
     my $default = ( $bug ? $bug_info{Subject} : $patch_info{Subject} ) // '';
     $default = "[PATCH] $default"
-        if $patch and $default !~ /\[PATCH\]/;
+        if $patch and $default !~ /\[PATCH\]/ and $opt_tracker ne 'github';
 
     my $term = Term::ReadLine->new('forward');
 
@@ -401,8 +402,6 @@ sub prepare_body {
     elsif ($patch) {
         # patch but no bug
 
-        my $pre = ( $opt_tracker eq 'github' ) ? '    ' : '';
-
         $body
             = "In Debian we are currently applying the following "
             . "patch to $opt_dist.\n"
@@ -410,16 +409,18 @@ sub prepare_body {
         $body = wrap( '', '', $body );
         $body .= "\n\n";
 
-        open my $patch_fh, '<', $patch;
-
-        while ( my $line = <$patch_fh> ) {
-            chomp($line);
-            last if $line eq '---';
-            last if $line =~ /^--- /;
-            last if $line =~ /^diff\h--git\ha\//;
-            last if $line =~ /^index\h[0-9a-f]+\.\.[0-9a-f]+\h\d*\h/;
-            next if $line =~ /^Forwarded:/;
-            $body .= $pre . $line . "\n";
+        if ( $opt_tracker ne 'github' ) {
+            open my $patch_fh, '<', $patch;
+
+            while ( my $line = <$patch_fh> ) {
+                chomp($line);
+                last if $line eq '---';
+                last if $line =~ /^--- /;
+                last if $line =~ /^diff\h--git\ha\//;
+                last if $line =~ /^index\h[0-9a-f]+\.\.[0-9a-f]+\h\d*\h/;
+                next if $line =~ /^Forwarded:/;
+                $body .= $line . "\n";
+            }
         }
     }
     else {
@@ -605,23 +606,44 @@ sub submit_github {
         access_token => $ENV{DPT_GITHUB_OAUTH},
     );
 
-    $gh->set_default_user_repo( $gh_user, $gh_repo );
-
-    my $issue;
-    if ($opt_ticket) {
-        $issue = $gh->issue->issue($opt_ticket);
-        $gh->issue->create_comment( $opt_ticket, { body => $body } );
+    if ($patch) {
+        my $orgname = 'pkg-perl-tools';
+        die "Cannot find your GitHub user in $orgname organization"
+            unless $gh->user->show($orgname)->{login} eq $orgname;
+
+        create_fork($gh, $gh_user, $gh_repo, $orgname)
+            unless fork_exists($gh, $orgname, $gh_repo);
+
+        my $branch = "pkg-perl-$^T";
+        clone_branch_patch_push($orgname, $gh_repo, $branch, $patch, $subject);
+
+        $issue_url = create_pull_request($gh, $gh_user, $gh_repo, {
+            title  => $subject,
+            body   => $body,
+            head   => "$orgname:$branch",
+            base   => 'master',
+            labels => [ split( /,/, $gh_labels ) ],
+        });
     }
     else {
-        $issue = $gh->issue->create_issue(
-            {   title  => $subject,
-                body   => $body,
-                labels => [ split( /,/, $gh_labels ) ],
-            }
-        );
-    }
+        $gh->set_default_user_repo( $gh_user, $gh_repo );
 
-    $issue_url = $issue->{html_url};
+        my $issue;
+        if ($opt_ticket) {
+            $issue = $gh->issue->issue($opt_ticket);
+            $gh->issue->create_comment( $opt_ticket, { body => $body } );
+        }
+        else {
+            $issue = $gh->issue->create_issue(
+                {   title  => $subject,
+                    body   => $body,
+                    labels => [ split( /,/, $gh_labels ) ],
+                }
+            );
+        }
+
+        $issue_url = $issue->{html_url};
+    }
 
 ISSUE_CREATED:
     mark_patch_as_forwarded($issue_url) if $patch;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/pkg-perl-tools.git



More information about the Pkg-perl-cvs-commits mailing list