본문 바로가기
Programming/Raspberry Pi

Redmine을 위한 Git 원격 저장소 생성 php 페이지 만들기[2/2]

by BACKK0M 2019. 1. 30.
반응형

이전 글에선 php페이지를 통해 bare repository를 생성하는 법에 대해 기재하였습니다.

1편: Redmine을 위한 Git 원격 저장소 생성 php 페이지 만들기

 

이번에는 저장소 이름이 중복될 경우 생성되지 않도록 코드를 약간 수정하고자 합니다.

 

이전 글에서 만들었던 create_git_repos.php 파일을 수정하도록 하겠습니다.

기전 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$repos_name = $_POST['id'];
if ($repos_name == '') {
  echo "빈 공백이 있어서는 안됩니다.";
else {
  $cmd = 'sudo sh /var/www/html/create_git_repos.sh '.$repos_name;
  try {
    $msg = shell_exec($cmd);
    if ($msg == '') {
      echo "저장소가 생성되지 못하였습니다.";
    } else {
      echo "저장소가 생성되었습니다.";
    }
  } catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
  }
}
?> 
 
cs

 

여기에서 추가할 기능은 디렉토리를 탐색하여 repository 이름들을 저장하고, 지금 생성할 repository의 이름이 이미 존재하는지 확인한 후 존재하지 않을 경우 repository가 생성되는 것입니다.

 

위의 코드를 아래와 같이 수정하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
// 폴더명 지정
$dir = "/var/www/html/repositories";
 
// 핸들 획득
$handle  = opendir($dir);
 
$check = false;
 
$repos_name = $_POST['id'];
if ($repos_name == '') {
  echo "빈 공백이 있어서는 안됩니다.";
else {
  while (false !== ($filename = readdir($handle))) {
    if ($filename == $repos_name) {
      $check = true;
      break;
    }
  }
  if (!$check) {
    $cmd = 'sudo sh /var/www/html/create_git_repos.sh '.$repos_name;
    try {
      $msg = shell_exec($cmd);
      if ($msg == '') {
        echo "저장소가 생성되지 못하였습니다.";
      } else {
        echo "저장소가 생성되었습니다.";
      }
    } catch (Exception $e) {
      echo 'Caught exception: ',  $e->getMessage(), "\n";
    }
  }
  else {
    echo "이미 같은 이름의 저장소가 있습니다.";
    echo "<br />";
  }
}
?> 
cs

 

이로써 repository 이름이 중복되는 경우에 대한 예외처리를 진행하였습니다.

 

감사합니다.

반응형