반응형
이전 글에선 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 이름이 중복되는 경우에 대한 예외처리를 진행하였습니다.
감사합니다.
반응형
'Programming > Raspberry Pi' 카테고리의 다른 글
Raspberry Pi 4 개봉기 (0) | 2020.05.09 |
---|---|
Redmine을 위한 Git 원격 저장소 생성 php 페이지 만들기[1/2] (0) | 2018.11.29 |
Docker Mysql Server 주기적으로 백업하기(crontab 활용하기) (0) | 2018.08.07 |
Raspberry Pi(라즈베리파이) Docker + Redmine + Mysql + Git 세팅하기 [7편: Redmine Git과 연동 (7/7)] (2) | 2018.07.13 |
Raspberry Pi(라즈베리파이) Docker + Redmine + Mysql + Git 세팅하기 [6편: Redmine 컨테이너 세팅(6/7)] (0) | 2018.07.13 |