Showing 3 changed files with 74 additions and 1 deletions
+3 -1
CHANGES
... ...
@@ -1,7 +1,9 @@
1 1
 2.3
2 2
   - Sorry, I found critical database specification mistake.
3 3
     I must fix pull_request and pull_request_message table.
4
-    All your pull requests is removed. Please create Pull request again.
4
+    All your pull requests is removed. Please create Pull request again by the following command.
5
+    
6
+    old/fix_v2_pull_request data/gitprep.db
5 7
 
6 8
 2.2 (4 June 2016)
7 9
   - add command line merging interface to pull request page
+9
README.md
... ...
@@ -482,6 +482,15 @@ and move this feature to project settings page.
482 482
 
483 483
 mail address is require for user registration.
484 484
 
485
+### Pull requests is removed when GitPrep upgrade
486
+
487
+Sorry, I found critical database specification mistake in GitPrep from v2.0 to v2.2,
488
+and fix it in v2.3.
489
+All your pull requests is removed when upgrading from v2.0-v2.2 to v2.3+.
490
+Please create Pull request again by the following command.
491
+    
492
+    old/fix_v2_pull_request data/gitprep.db
493
+
485 494
 ### Are there other ways to install GitPrep?
486 495
 
487 496
 **Use sparrow**
+62
old/fix_v2_pull_request
... ...
@@ -0,0 +1,62 @@
1
+#!/usr/bin/env perl
2
+
3
+use strict;
4
+use warnings;
5
+
6
+use FindBin;
7
+use lib "$FindBin::Bin/../extlib/lib/perl5";
8
+use DBIx::Custom;
9
+
10
+my $database_file = shift;
11
+
12
+# New DBI
13
+my %dbi_args = (
14
+  dsn => "dbi:SQLite:database=$database_file",
15
+  connector => 1,
16
+  option => {sqlite_unicode => 1, sqlite_use_immediate_transaction => 1}
17
+);
18
+my $dbi = DBIx::Custom->connect(%dbi_args);
19
+
20
+# Copy pull_request data to issue
21
+my $pull_requests = $dbi->select(table => 'pull_request')->all;
22
+for my $pull_request (@$pull_requests) {
23
+  my $new_issue = {
24
+    row_id => $pull_request->{row_id},
25
+    title => $pull_request->{title},
26
+    open => $pull_request->{open},
27
+    open_time => $pull_request->{open_time},
28
+    open_user => $pull_request->{open_user},
29
+    pull_request => $pull_request->{row_id}
30
+  };
31
+  
32
+  my $issue = $dbi->select(
33
+    table => 'issue',
34
+    where => {row_id => $new_issue->{row_id}}
35
+  )->one;
36
+  
37
+  unless ($issue) {
38
+    $dbi->insert($new_issue, table => 'issue');
39
+  }
40
+}
41
+
42
+my $pull_request_messages = $dbi->select(table => 'pull_request_message')->all;
43
+for my $pull_request_message (@$pull_request_messages) {
44
+  my $new_issue_message = {
45
+    row_id => $pull_request_message->{row_id},
46
+    issue => $pull_request_message->{pull_request},
47
+    number => $pull_request_message->{number},
48
+    message => $pull_request_message->{message},
49
+    create_time => $pull_request_message->{create_time},
50
+    update_time => $pull_request_message->{update_time},
51
+    user => $pull_request_message->{user}
52
+  };
53
+  
54
+  my $issue_message = $dbi->select(
55
+    table => 'issue_message',
56
+    where => {row_id => $new_issue_message->{row_id}}
57
+  )->one;
58
+  
59
+  unless ($issue_message) {
60
+    $dbi->insert($new_issue_message, table => 'issue_message');
61
+  }
62
+}