2021-05-12-TIL
Git에서 파일 이름 대소문자 변경 반영하기
macOS의 기본 파일 시스템이나 Windows의 NTFS는 대소문자를 구분하지 않는다. Git은 git init이나 git clone 때 파일 시스템을 검사해서 이런 환경이면 core.ignoreCase를 true로 둔다(git-config). 그래서 Item.java를 item.java로 바꿔도 Git은 같은 파일로 보고 변경을 잡지 않는다. 그런데 리눅스 서버나 CI는 대소문자를 구분하므로, 로컬에서는 빌드되는데 서버에서는 클래스나 파일을 못 찾는 문제가 생긴다.
이름 변경을 Git에 직접 알려 주면 된다. 임시 이름을 한 번 거치면 대소문자를 구분하지 않는 환경에서도 확실하게 반영된다.
1
2
git mv Item.java temp.java
git mv temp.java item.java
참고한 글에 따르면 Git 2.21.0 이전에는 git mv --force user.ts User.ts처럼 --force를 붙여야 했고, 이후 버전은 git mv user.ts User.ts만으로 대소문자 변경을 인식한다. 탐색기나 셸에서 이름만 바꾸면 스테이지에 변경이 나타나지 않으므로, 어느 방법이든 git mv를 거쳐야 한다.
TODO
- isPlaying 랜덤으로 생성
- playing의 값들을 null로 생성
- average 계산
- game, team에 대한 더미 데이터 추가
- average 소수점 셋째자리까지 표시
타율 같은 평균은 String.format("%.3f", average)로 소수점 셋째 자리까지 표시할 수 있다. 정수끼리 나누면 소수점이 버려지므로 (double) hits / atBats처럼 먼저 실수로 바꿔야 한다. 타석이 0인 선수는 0으로 나누게 되므로 따로 처리해야 한다.
더미 데이터는 아래처럼 넣었다. game은 경기마다 홈 팀과 원정 팀 이름, 점수, 종료 여부를 갖고, team은 팀 이름과 현재 경기 중인지(is_playing)를 갖는다.
1
2
3
4
5
6
7
8
9
10
11
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('1', '0', '0', '0', 'Samsung Lions', 'KIA Tigers');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('2', '0', '0', '0', 'NC Dinos', 'Hanwha Eagles');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('3', '0', '0', '0', 'Lotte Giants', 'Doosan Bears');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('4', '0', '0', '0', 'SSG Landers', 'LG Twins');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('5', '0', '0', '0', 'New York Yankees', 'New York Mets');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('6', '0', '0', '0', 'Los Angeles Dodgers', 'Boston Red Sox');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('7', '0', '0', '0', 'Atlanta Braves', 'Los Angeles Angels');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('8', '0', '0', '0', 'St. Louis Cardinals', 'Chicago Cubs');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('9', '0', '0', '0', 'Toronto Blue Jays', 'San Francisco Giants');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('10', '0', '0', '0', 'Houston Astros', 'San Diego Padres');
INSERT INTO `baseball`.`game` (`id`, `home_score`, `away_score`, `is_end`, `home_name`, `away_name`) VALUES ('11', '0', '0', '0', 'Philadelphia Phillies', 'Cleveland Indians');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Samsung Lions', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('KIA Tigers', '1');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('NC Dinos', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Hanwha Eagles', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Lotte Giants', '1');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Doosan Bears', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('SSG Landers', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('LG Twins', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Atlanta Braves', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Boston Red Sox', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Chicago Cubs', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Cleveland Indians', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Houston Astros', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Los Angeles Angels', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Los Angeles Dodgers', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('New York Mets', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('New York Yankees', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Philadelphia Phillies', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('San Diego Padres', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('St. Louis Cardinals', '0');
INSERT INTO `baseball`.`team` (`name`, `is_playing`) VALUES ('Toronto Blue Jays', '0');
데모 흐름
- 게임 스타트를 누르면 게임 리스트가 받아와진다.
- 진행 중인 게임에 대해서는 선택이 안 되도록 했습니다.
- 그러면 첫 번째 팀을 선택하고 player 표시가 뜨고
- 마우스로 상단의 버튼을 슬라이드하면 스코어 현황판이 뜨고
- 아래쪽을 슬라이드하면 선수별 스코어 현황판이 보입니다.
- 그리고 PITCH 버튼을 누르면, 일정 비율에 따라 strike, ball, 안타가 결정되고,
- 4 ball이면 진루, 3 strike 면 아웃이 됩니다.
- 옴팡이가 홈에 들어오면 점수가 올라갑니다.
아쉬운 점
- VPC 사용
- 프론트 서버 배포 - 제인
- OAuth 적용
- API 문서 자동배포 서버 - 프레디
- 소켓 기반으로 야구게임 -> 프론트
참고한 자료외부 출처 2
외부 출처
- git에서 파일 이름 대소문자만 변경하기
- git-configcore.ignoreCase
댓글
아직 댓글이 없습니다