Tôi đang làm việc trong một nhóm nhỏ với tối đa 5 nhà phát triển (web). Bởi vì nhóm của chúng tôi đang phát triển thường xuyên và chúng tôi gặp vấn đề với nhiều người làm việc trên cùng một mã, chúng tôi đã quyết định thiết lập một VCS.
Tình hình hiện tại
Hiện tại chúng tôi đang làm việc với một máy chủ phát triển trung tâm (LAMP). Vì vậy, mọi nhà phát triển đều làm việc trên cùng một cơ sở mã và nếu mã được kiểm tra và sẵn sàng cho máy chủ trực tiếp của chúng tôi, chúng tôi chỉ cần sao chép nó qua ftp. Tôi biết đây là một số quy trình công việc anno 1600 nhưng vâng - đó là những gì nó cũng là lý do cho câu hỏi này.
Trên máy chủ phát triển, cấu trúc thư mục của chúng tôi trông như thế này:
/var/www
/Project1
/Project2
/Project3
...
Ngoài ra, có một số ứng dụng không phải là ứng dụng web nhỏ - ứng dụng Android / iPhone / Windows 8, v.v. và một số công cụ C # cũng nên được đưa vào VCS.
Mục tiêu và vấn đề
Mục tiêu của chúng tôi là có được một thiết lập sạch cho một VCS, hoạt động cùng với một phần mềm theo dõi vấn đề, cho phép chúng tôi làm việc với cùng một dự án cùng một lúc mà không ghi đè mã của chúng tôi và chỉ đơn giản là cho chúng tôi lợi thế về kiểm soát phiên bản.
Tôi nghĩ rằng câu hỏi đầu tiên cho chúng ta là, chúng ta nên sử dụng công nghệ nào. Một số người trong chúng ta đã có kinh nghiệm lật đổ. Nhưng bởi vì git là một loại trở thành "tiêu chuẩn" và có rất nhiều đối số "pro git" trong số những người dùng web chúng ta có xu hướng sử dụng git.
Có sự bắt đầu không chắc chắn của chúng tôi. Để sử dụng git - một VCS phi tập trung - có vẻ như chúng ta phải bắt đầu sử dụng các máy chủ phát triển riêng biệt trên mỗi máy tính của nhà phát triển. Các vấn đề với đó là:
- Đôi khi chúng tôi làm việc trên các máy tính khác nhau, vì vậy khi chúng tôi quên đẩy mã của mình, chúng tôi gặp sự cố.
- Chúng tôi sẽ phải làm việc với các máy ảo vì các máy chủ dev phải giống như máy chủ trực tiếp của chúng tôi (Điều này đơn giản là không thể thực thi được trong môi trường của chúng tôi, tin tôi là không thể).
- Máy chủ phát triển cũng thường phục vụ như một máy chủ "thử" hoặc "thuyết trình" trong đó những người không phải là nhà phát triển đã xem xét những gì đang diễn ra.
Có một thiết lập khả dĩ nào khác với git để chúng tôi có thể hưởng lợi từ hệ thống trong khi vẫn sử dụng một máy chủ phát triển (!) Không? Có thể với các thư mục khác nhau cho mỗi nhà phát triển. Hoặc chúng ta vẫn có thể làm việc trên cùng một cơ sở mã với việc có thể khóa các tệp mà chúng ta đang làm việc và sau đó cam kết chúng vào một kho lưu trữ. Có thể rất quan trọng để nói rằng mặc dù nó đã trở thành một yếu tố đối với chúng tôi nhưng vẫn không có gì lạ khi nhiều nhà phát triển làm việc trên cùng một phần của một ứng dụng cùng một lúc.