summaryrefslogtreecommitdiffstats
path: root/etc/phpshellsessions/gitsync
diff options
context:
space:
mode:
Diffstat (limited to 'etc/phpshellsessions/gitsync')
-rw-r--r--etc/phpshellsessions/gitsync58
1 files changed, 41 insertions, 17 deletions
diff --git a/etc/phpshellsessions/gitsync b/etc/phpshellsessions/gitsync
index 6491851..4176dfe 100644
--- a/etc/phpshellsessions/gitsync
+++ b/etc/phpshellsessions/gitsync
@@ -48,10 +48,18 @@ if(file_exists("/root/cvssync_backup.tgz")) {
$branches = array_merge($branches, $tmp);
}
+if(is_dir("$CODIR/pfSenseGITREPO/pfSenseGITREPO")) {
+ exec("cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git config remote.origin.url", $output_str, $ret);
+ if(is_array($output_str) && !empty($output_str[0]))
+ $GIT_REPO = $output_str[0];
+ unset($output_str);
+}
+
if($command_split[2]) {
$branch = $command_split[2];
} else {
if(!$argv[3]) {
+ echo "\nCurrent repository is $GIT_REPO\n";
echo "\nPlease select which branch you would like to sync against:\n\n";
foreach($branches as $branchname => $branchdesc) {
echo "{$branchname} \t {$branchdesc}\n";
@@ -97,6 +105,21 @@ if(!$found) {
}
}
+$merge_repos = array();
+if(!$command_split[2] && !$argv[3]) {
+ do {
+ echo "\nAdd a custom RCS branch URL (HTTP) to merge in or press enter for none.\n\n";
+ $merge_repo = readline("> ");
+ if(!empty($merge_repo)) {
+ $merge_branch = readline("Merge which branch [master]? ");
+ if($merge_branch == "")
+ $merge_repos[] = array('repo' => $merge_repo, 'branch' => 'master');
+ else if($merge_branch)
+ $merge_repos[] = array('repo' => $merge_repo, 'branch' => $merge_branch);
+ }
+ } while(!empty($merge_repo));
+}
+
if($branch == "RESTORE" && $g['platform'] == "pfSense") {
if(!file_exists("/root/cvssync_backup.tgz")) {
echo "Sorry, we could not find a previous CVSSync backup file.\n";
@@ -125,25 +148,15 @@ exec("mkdir -p /root/pfsense/$branch");
// Git 'er done!
if(is_dir("$CODIR/pfSenseGITREPO/pfSenseGITREPO")) {
echo "===> Fetching updates...\n";
+ exec("cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git config remote.origin.url $GIT_REPO");
exec("cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git fetch");
exec("cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git clean -f -f -x -d");
- if($branch == "master") {
- $git_cmd = array(
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git reset HEAD --hard",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git rebase origin"
- );
- run_cmds($git_cmd);
- } else {
- $git_cmd = array(
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git reset HEAD --hard",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git checkout master",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git branch -D $branch",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git fetch",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git rebase origin",
- "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git checkout -b $branch origin/$branch"
- );
- run_cmds($git_cmd);
- }
+ $git_cmd = array(
+ "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git branch $branch origin/$branch 2>/dev/null",
+ "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git checkout -f $branch 2>/dev/null",
+ "cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git reset --hard origin/$branch"
+ );
+ run_cmds($git_cmd);
} else {
exec("mkdir -p $CODIR/pfSenseGITREPO");
echo "Executing cd $CODIR/pfSenseGITREPO && git clone $GIT_REPO pfSenseGITREPO\n";
@@ -159,6 +172,17 @@ if(is_dir("$CODIR/pfSenseGITREPO/pfSenseGITREPO")) {
}
}
+foreach($merge_repos as $merge_repo) {
+ echo "===> Merging branch {$merge_repo['branch']} from {$merge_repo['repo']}\n";
+ exec("cd $CODIR/pfSenseGITREPO/pfSenseGITREPO && git pull {$merge_repo['repo']} {$merge_repo['branch']}", $output_str, $ret);
+ unset($output_str);
+ if($ret <> 0) {
+ echo "\nMerge failed. Aborting sync.\n\n";
+ run_cmds($git_cmd);
+ exit;
+ }
+}
+
exec("mkdir -p /tmp/lighttpd/cache/compress/");
// Nuke CVS and pfSense tarballs
OpenPOWER on IntegriCloud