Làm thế nào tôi có thể duy trì chất lượng mã mà không có SCM?


110

Tôi đang làm việc trong một tổ chức chính phủ. Công nghệ đang được sử dụng ở đây và các phương pháp để phát triển phần mềm khá lỗi thời.

Họ có hàng tấn không gian lưu trữ nhưng không có không gian thích hợp để giữ và duy trì các ứng dụng được sử dụng để tự động hóa hầu hết các công việc ở đây.

Tổ chức sẽ không cho phép tôi sử dụng phần mềm SCM như GIT hoặc SVN.

Điều gì sẽ là cách tiếp cận tốt nhất để giữ chất lượng mã và có thể thêm các tính năng mới trong các ứng dụng sau này?

Làm thế nào tôi có thể nhớ những thay đổi tôi đã thực hiện đối với mã mà không phá vỡ nó?

EDIT: Tôi quên đề cập, họ có các ổ đĩa mạng cho mỗi máy tính và bằng cách nào đó các ổ đĩa mạng này tạo hoặc lưu các bản sao lưu trong các khoảng thời gian. Tuy nhiên, nếu tôi không tạo kế hoạch của riêng mình cho phép lưu công việc của mình và có thể thêm các tính năng mới mà không vi phạm mã hiện tại, thì không có lợi thế lớn so với giải pháp SCM.

EDIT: Vì nhiều người đề xuất Git di động, tôi phải thêm thông tin. Tôi đã thử cài đặt máy chủ Visual SVN nhưng không thành công vì tôi không có quyền quản trị để cài đặt. Tôi cũng đã thử tải xuống Git shell thông thường, nhưng tường lửa hoặc cài đặt mạng không cho phép tôi truy cập trang tải xuống Git. Tôi thậm chí đã thử, gửi Git di động đến email của tôi, đó là Gmail. Google đã phát hiện tệp exe trong gói và nó cũng không cho phép tôi tải xuống phiên bản Git di động trên máy tính làm việc của mình. Một điều khác tôi phải đề cập, chính sách mạng áp dụng cho các máy tính mà tổ chức không cho phép sử dụng các bộ lưu trữ USB. Bạn có thể sử dụng các cổng USB để sạc điện thoại thông minh hoặc cấp nguồn cho một số tiện ích như loa nhỏ. Cũng như một số người đã đề cập, có những máy tính thậm chí không được phép sử dụng Internet.


4
bạn có thể bỏ qua bộ lọc gety filetype bằng cách đổi tên nó thành một phần mở rộng "nổi tiếng", như .mp3, .zip.
Pac0

2
Tôi đang tự hỏi bản thân mình, tại sao câu hỏi này vẫn có quá nhiều sự ủng hộ trong năm 2017 - Tôi thực sự sợ hãi
Ole K

9
Tìm việc khác. Những người này là khủng long vô lý. Bạn sẽ tìm thấy rất nhiều sự hài lòng trong công việc ở đâu đó muốn bạn sử dụng các công cụ hiện đại phù hợp.
Rob K

5
Không có lý do gì mà một tổ chức chính phủ không nên sử dụng SCM. Trên thực tế, có lẽ họ đang phá vỡ một loạt các quy trình và quy tắc kiểm toán bằng cách không sử dụng SCM. Tôi khuyên bạn nên tấn công nó từ góc độ đó
jk.

2
@jk mang đến một điểm thực sự tốt. Nếu một khiếm khuyết gây ra tổn thất tiền tệ, cho phép gian lận hoặc dẫn đến việc ai đó bị thương hoặc mất mạng, các kiểm toán viên sẽ hạ xuống khi bạn giống như sư tử trên một con cừu - và ai đó sẽ mất việc. Bạn rất có thể. Quản lý cấp trên sẽ không mạo hiểm lương hưu của họ cho những người như bạn.
Greg Burghardt

Câu trả lời:


175

Bạn có thể sao chép một cách lỏng lẻo các vai trò kiểm soát nguồn với ba công cụ đơn giản:

  • Phần mềm sao lưu (Cam kết / Đăng ký)
  • Thư mục (Chi nhánh)
  • Thực hiện hợp nhất thư mục giữa hai thư mục bằng một công cụ như KDiff3 (Sáp nhập các nhánh)

Về cơ bản quy trình làm việc của bạn trở thành:

  1. Tạo một thư mục mới (chi nhánh mới)
  2. Sao chép tệp vào thư mục mới (nhánh mới) từ thư mục hiện có (nhánh hiện có)
  3. Tạo một bản sao lưu của thư mục đó (kết thúc việc tạo nhánh mới)
  4. Làm một số công việc
  5. Tạo một bản sao lưu của thư mục mới (cam kết)
  6. Thực hiện hợp nhất thư mục từ thư mục này sang thư mục khác (hợp nhất)
  7. Thực hiện sao lưu khác trong thư mục khác (cam kết hợp nhất)

Các hệ thống kiểm soát nguồn nguyên khối hơn, như SVN hoặc TFS, về cơ bản làm điều này cho bạn đằng sau hậu trường.


Bây giờ, thực tế giống như một Công ty xe buýt nói với các tài xế của mình rằng họ không thể lái xe buýt có pin, buộc các tài xế đẩy xe buýt xuống đồi và sau đó bật côn để khởi động xe buýt ... điều này thật tồi tệ và chỉ ra rằng ban quản lý hiện tại không biết gì về việc điều hành nhà để xe buýt. Gửi lời chia buồn của tôi.

Nhưng ít nhất bạn có thể bắt xe buýt bắt đầu.


41
Đây thực sự là câu trả lời chính xác cho các ràng buộc. Đó cũng là cách chúng tôi đã làm điều đó trước khi VCSes trở thành một thứ.
Blrfl

35
+1 mặc dù đối số dễ dàng đối với điều này sẽ nằm trong các dòng ... chúng tôi cũng đã từng lập trình với thẻ đục lỗ, không có nghĩa là chúng tôi nên làm lại
Newtopian

25
+1 - để trả lời câu hỏi. Không có kiểm soát nguồn trong công việc đầu tiên của tôi và đây là cách chúng tôi đã làm mọi thứ. Lưu ý: chỉ có hai chúng tôi, chúng tôi đã làm tốt và chúng tôi chủ yếu làm việc cho các dự án riêng biệt và, với nhận thức muộn, đó vẫn là một ý tưởng tồi. Bất kỳ sự phức tạp bổ sung nào của đội và đó sẽ là một cơn ác mộng.
Bob Tway

18
Tôi nghi ngờ OP sẽ có thể cài đặt / tải xuống một công cụ như KDiff3. Nếu anh ta không thể cài đặt git cục bộ, tôi nghi ngờ anh ta có thể git bất cứ thứ gì khác chạy cục bộ.
Ivan

5
@Ivan: Sau khi xem qua các bình luận Có vẻ như OP đã ở trên máy Linux. Tôi đã tìm thấy các tổ chức sử dụng ngăn xếp công nghệ này thường có sẵn một số công cụ diff / merge như một phần của bản dựng máy tính để bàn thông thường và kdiff3 là một công cụ khá phổ biến. Có thể có những cái khác mà hợp nhất thư mục quá có thể? Hoặc OP bị kẹt khi trộn từng tệp một (ick!). Nhưng vâng, tình huống này chỉ đơn giản là hút.
Greg Burghardt

139

Mặc dù sự đồng thuận chắc chắn sẽ không làm việc cho công ty này, tôi không tin rằng thực sự trả lời câu hỏi của bạn.

Bạn thực sự không thể thay thế SCM .

Bạn có thể không cần chuông và còi thông thường của một hệ thống đầy đủ. Ví dụ, công ty có thể từ chối yêu cầu máy chủ, nhưng cho phép sử dụng SCM cục bộ. Họ có thể không thích git, nhưng cho phép lật đổ (hoặc một số hệ thống phiên bản khác).

Tất nhiên có một câu hỏi: đồng nghiệp của bạn đang sử dụng cái gì, hoặc bất kỳ nhân viên nào trước đây? Nếu bạn là Nhà phát triển phần mềm đầu tiên họ có, thì đã đến lúc bạn phải nỗ lực rất nhiều cho các tài nguyên bạn cần.

Cuối cùng, nếu công ty của bạn không tôn trọng vai trò và kinh nghiệm của bạn và sẽ không cho phép bạn sử dụng các công cụ bạn cần, thì bạn sẽ gặp phải các vấn đề thậm chí còn tồi tệ hơn (và căng thẳng hơn) so với việc thiếu kiểm soát nguồn.


11
Các ứng dụng tôi đang làm việc là một dự án cá nhân. Và, không, tôi không phải là lập trình viên đầu tiên ở đây. Nhiều người đã đến đây và đi xa.
Vlad

7
Và tôi cũng thấy thất vọng ở một số đồng nghiệp, khi họ cố gắng sử dụng những ứng dụng có cấu trúc xấu xí cũ này, với khuôn mặt "Tại sao chúng ta làm công cụ này mỗi năm".
Vlad

6
@Vlad: bạn có biết rằng cả Git và SVN đều không cần nhiều hơn một ổ đĩa mạng không? Đối với VB6 và các dự án cá nhân, tôi có thể sẽ làm việc với SVN, đơn giản hơn để xử lý các tệp nhị phân. Tôi đã làm điều này trong nhiều năm, cho đến khi chúng tôi thay thế chương trình VB6 cuối cùng.
Doc Brown

24
@Vlad "Nhiều người đã đến đây và đi mất." Tìm một cách tôn trọng để nói với họ rằng văn hóa công ty này có thể có liên quan đến doanh thu của họ.
jpmc26

26
Nhắc nhở bản thân: Hỏi SCM công ty sử dụng gì trong cuộc phỏng vấn. Nếu không biết hoặc không nói gì, thì hãy nói với họ, cảm ơn bạn đã dành thời gian và lãng phí thời gian của tôi.
joojaa

25

Về cơ bản, có một vấn đề về quản lý (tổ chức của bạn không hiểu những điều cơ bản của quy trình phát triển phần mềm , ví dụ như mô hình V ) ngưng tụ thành sự bất lực rõ ràng của việc sử dụng quy trình, phương pháp và công cụ trong thời đại hiện tại tối thiểu. Điều này là phổ biến (đọc về nguyên tắc của Peter ).

BTW, tôi đoán rằng sự cố đường sắt SNCF gần đây ở Paris vào cuối năm 2017 có một nguyên nhân tương tự (hoàn toàn thiếu văn hóa phần mềm ở cấp quản lý cao, do đó tắc nghẽn một nhà ga đường sắt lớn của Paris trong hơn một ngày; Các đội CNTT tại SNCF, nhưng họ không được hỏi ý kiến ​​về các quyết định lớn). Tôi có thể kể tên một số ngành công nghiệp châu Âu hoàn toàn thiếu văn hóa phần mềm và tôi chắc chắn có thể tìm thấy những thứ tương tự ngay cả ở Hoa Kỳ.

Vấn đề chính là: bạn đang làm việc một mình trên cơ sở mã của mình hay bạn làm việc với các đồng nghiệp?

Nếu bạn đang làm việc một mình, bạn có thể sử dụng git cục bộ trên máy tính của mình và sao lưu mã của bạn (và có thể cả .gitkho lưu trữ của bạn ) theo định kỳ (vào không gian lưu trữ bên ngoài đó). Hãy chắc chắn không bao giờ mất hơn nửa ngày làm việc (vì vậy hãy sao lưu dữ liệu của bạn theo định kỳ và đáng tin cậy).

(Tôi cho rằng bạn biết ít nhất cả hai gitsvnbạn biết ưu thế kỹ thuật git; nếu bạn thậm chí không được phép cài đặt một số công cụ như gittrên máy tính làm việc của mình, bạn cần có một cuộc trò chuyện nghiêm túc với sếp về vấn đề đó: bạn cần khả năng và ủy quyền để cài đặt các công cụ nguồn mở bên ngoài (và trách nhiệm của bạn là chọn, định cấu hình và cài đặt chúng một cách khôn ngoan & cẩn thận và không có lỗ hổng đã biết )

Nếu bạn đang làm việc với một số đồng nghiệp (tôi đoán ít hơn một tá trong số họ), bạn cần thuyết phục tất cả họ sử dụng hệ thống kiểm soát phiên bản và có lẽ bạn cần phải nói về điều đó với ông chủ trực tiếp (và chung) của mình. Anh ta có thể (có thể) quyết định (hoặc đơn giản là chấp nhận ngầm) rằng một số máy (thậm chí một số máy tính để bàn cũ, thậm chí cả máy tính để bàn của riêng bạn) được sử dụng làm máy chủ git. Bạn hoàn toàn cần thiết lập máy chủ đó để kho git được sao lưu ít nhất mỗi giờ; bạn không đủ khả năng (và bạn cần nói chuyện với sếp của bạn) về việc mất hơn một giờ làm việc của nhóm.

BTW, tôi yêu Linux và tôi khuyên bạn nên cài đặt Linux trên máy hoạt động như một gitmáy chủ; sau đó cài đặt gitvà cấu hình sao lưu định kỳ (với một số crontabcông việc) rất dễ dàng; lưu ý rằng một gitmáy chủ có thể chạy Linux với các máy khách Windows sử dụng nó. Tôi thậm chí sẽ đề nghị bạn chuyển máy phát triển sang Linux nếu có thể. Nó "rẻ hơn" và thân thiện với nhà phát triển hơn nhiều

Nhưng bạn cần sử dụng SCM. Bạn có thể hỏi sếp của bạn một câu hỏi khác: nhóm của bạn nên sử dụng SCM hiện có hay nó nên phát minh lại bánh xe và tạo SCM của riêng bạn? Các ông chủ thường chống lại ý tưởng sáng tạo lại bánh xe. Nếu bạn được phép phát minh lại bánh xe, hãy nói với sếp rằng đó là công việc toàn thời gian trong ít nhất một năm (điều đó có thể sẽ khiến sếp của bạn khóc, sau đó chấp nhận cách rõ ràng) và vui vẻ làm SCM của riêng bạn. Trong trường hợp không chắc chắn đó, hãy chắc chắn nghiên cứu các hệ thống SCM hiện có và yêu cầu biến hệ thống SCM của bạn thành một công cụ phần mềm miễn phí (sẽ được các nhóm khác sử dụng và cải tiến).

Bạn có thể cần chuẩn bị (trong vài ngày) một lập luận chính xáccụ thể cho nhu cầu của SCM : trước tiên là cho các đồng nghiệp của bạn, sau đó cho sếp trực tiếp của bạn. Hãy chắc chắn cũng đề xuất các giải pháp cụ thể (như chạy một số máy chủ git trên một số máy tính để bàn hoặc một số máy chủ "cũ" và sao lưu nó hàng giờ thông qua một crontabcông việc)

Không cài đặt bất kỳ phần mềm nào (từ bên ngoài, thậm chí là nguồn mở) trên máy tính làm việc của bạn mà không được phép (ở hầu hết các quốc gia, đặc biệt là đối với công việc CNTT nhạy cảm cho Nhà nước, cài đặt phần mềm mà không được phép là một tội phạm pháp lý và bạn có thể mất công việc hoặc vào tù nếu bạn làm điều đó .... vì vậy hãy chắc chắn được ủy quyền để làm điều đó; có thể che đậy mông của bạn bằng cách xin phép bằng văn bản, hoặc ít nhất là qua email).

(bạn sẽ cần phải hỏi từng trường hợp cụ thể hoặc bạn cần có được sự tin tưởng từ tổ chức của mình để được phép cài đặt bất kỳ phần mềm hợp pháp nào - chủ yếu là nguồn mở hoặc phần mềm miễn phí - trên máy tính làm việc của bạn).

Tái bút Cách xây dựng, định cấu hình, cài đặt về mặt kỹ thuật sau đó sử dụnggit (từ mã nguồn phần mềm miễn phí) - hoặc hầu hết các phần mềm miễn phí khác VCS- trên máy (ngay cả khi không có sự cho phép của quản trị viên) là một câu hỏi rất khác (được hỏi ở nơi khác). Và có thể cài đặt sau đó sử dụng gitmà không cần sự cho phép của quản trị viên, miễn là bạn có đủ tài nguyên (thời gian, dung lượng đĩa, một số trình biên dịch C, v.v.) cho điều đó.

Tôi đã thử cài đặt máy chủ Visual SVN nhưng không thành công vì tôi không có quyền quản trị để cài đặt.

Điều này có thể giải quyết được bằng một số cấu hình cụ thể và biên dịch của bạn githoặc svntừ mã nguồn phần mềm miễn phígit hoặc SubVersion - không chỉ là gói nhị phân- (và cả mã nguồn của các phụ thuộc ); Làm thế nào để kỹ thuật làm điều đó là một câu hỏi khác nhau (nhưng câu hỏi kỹ thuật như vậy nên đi ở một nơi khác ). Tất nhiên bạn nên xin phép (từ sếp của bạn) để biên dịch mã nguồn gittrước khi thực hiện. Anh ta sẽ nói với bạn, hoặc bạn sẽ thảo luận với anh ta, về các chi tiết thực tế (nếu anh ta chấp nhận một giải pháp như vậy) về việc chuyển mã nguồn đó từ bên ngoài vào máy tính làm việc của bạn.


5
Bạn có thể truy cập Github và xây dựng Git từ nguồn không?
Willem

5
@RobertHarvey Bảo mật phải luôn là ưu tiên thấp hơn so với thực hiện công việc của bạn (của tổ chức, không phải công việc của bạn cụ thể). Bởi vì bạn sẽ an toàn nhất nếu bạn không làm gì cả. Và sau đó chính phủ giải tán tổ chức của bạn bởi vì nó không bao giờ làm bất cứ điều gì (hoặc thậm chí còn ít hơn hầu hết các tổ chức chính phủ). Hoặc tất cả các bạn mất việc vì tổ chức phá sản (nếu không được chính phủ tài trợ). Hay như vậy.
Immibis

6
@immibis: Xin lỗi, nhưng đó là một người đàn ông rơm. Không có thứ gọi là bảo mật hoàn chỉnh và bảo mật đầy đủ không yêu cầu bạn phải hy sinh năng suất nếu bạn làm đúng cách. Lưu ý rằng cách đơn giản nhất và hiệu quả nhất để có bảo mật hiệu quả (cho biện pháp phòng ngừa xử lý sản phẩm công việc hợp lý) chỉ đơn giản là tháo từ Internet.
Robert Harvey

8
@RobertHarvey Điều đó sẽ không ngăn cản một nhân viên ăn cắp IP của bạn. Cách dễ nhất để ngăn chặn nhân viên ăn cắp IP của bạn là không có IP để đánh cắp. Bạn nói rằng bảo mật là ưu tiên hàng đầu, không phải thứ hai hay thứ ba, trong trường hợp đó, năng suất phải là ưu tiên thứ hai hoặc thứ ba, và do đó nên giảm đi theo hướng có lợi cho bảo mật.
Immibis

3
@immibis, bạn có vẻ như một người không có kinh nghiệm làm việc trong những môi trường này. Bạn cũng đang nói về những khách hàng có thể khóa bạn một cách hợp pháp và vứt chìa khóa nếu bạn đánh cắp IP của họ. Đó là một môi trường mà việc xử lý sai thông tin (thậm chí không bị đánh cắp hoàn toàn IP) có thể gây tổn hại nghiêm trọng cho tổ chức. Tất nhiên bảo mật là mối quan tâm chính. Nó làm cho công việc trong môi trường đó là một nỗi đau.
Berin Loritsch

11

Điều đầu tiên tôi sẽ làm là xác định cụ thể những gì cơ quan chính phủ (có lẽ là bộ phận CNTT) đang phản đối. Nếu họ có không gian lưu trữ, nhưng không có cách lưu trữ VM cho máy chủ, thì vấn đề có thể là bộ phận CNTT đang nói không với máy chủ SVN hoặc GIT và đó là một sự khác biệt lớn. Nếu vấn đề là quốc gia khởi nguồn - tức là chúng ta không tin tưởng các công cụ được tạo bởi các thực thể nước ngoài - thì đó là một vấn đề khác.

Bạn có thể chạy GIT hoàn toàn trong hệ thống tệp, điều mà tôi đã thực hiện trên các dự án sơ sinh trước khi tôi sẵn sàng làm bất cứ điều gì với chúng. GIT cũng không yêu cầu quyền quản trị để cài đặt.

Nếu bạn hoàn toàn không thể sử dụng Git vì bất kỳ lý do gì, thì bạn có một vài tùy chọn có sẵn cho bạn:

  • Giáo dục: Bằng cách không cho phép kiểm soát phiên bản, họ đang đưa ra rủi ro đáng kể. Bạn cần khả năng sao lưu những thay đổi chứng tỏ có nhiều vấn đề hơn. Bạn cần khả năng tiết kiệm tiền và thời gian của chính phủ và SCM làm được điều đó. Bạn cần có thể giải thích rõ ràng như thế nào. Bạn cũng có thể cần phải làm một phân tích về các lựa chọn thay thế để thực sự lái xe về nhà.
    • Một thay thế sẽ được lưu trữ Git
    • Một hệ thống tập tin khác Git
    • Chọn ít nhất một, nhưng không quá hai công cụ SCM thay thế
    • và cuối cùng là những gì để làm việc mà không có kiểm soát phiên bản
  • Phát triển kỷ nguyên của thập niên 70: Có một lý do patchdiffđã được thực hiện từ rất lâu rồi (thập niên 80). Chúng là những công nghệ cho phép kiểm soát phiên bản có thể.

Sự phát triển của thời đại những năm 70 trông như thế nào? Nó không đẹp, nhưng đó là cách chúng tôi bắt đầu. Các ứng dụng nhỏ hơn nhiều. Về cơ bản họ có một số điều phổ biến:

  • Có khái niệm về tiêu chuẩn vàng . Đây là mã nguồn chính có các tính năng hoàn chỉnh.
  • Có một nhóm Quản lý cấu hình (CM). Trách nhiệm của họ là có được những thay đổi từ sự phát triển thành tiêu chuẩn vàng một cách chính xác. Đây là nơi bạn cần patchdiffđể thay thế cho đội.
  • Bạn đã làm việc từ một bản sao cục bộ của mã nguồn. Bạn hoàn thành toàn bộ một tính năng và gửi nó cho nhóm CM để chúng tích hợp. Thông thường có một tài liệu đi kèm để các tệp mới được tạo và các tệp lỗi thời bị xóa, v.v.
  • Sau đó, bạn sửa bất kỳ lỗi nào từ quá trình tích hợp.
  • Trước khi bạn có thể giải trí một tính năng khác hoặc sửa lỗi, bạn sẽ có được một bản sao mới của tiêu chuẩn vàng.

Về cơ bản, đây là một quá trình dễ bị lỗi với rất nhiều khả năng xảy ra lỗi. Ý tưởng "phân nhánh" rất dễ thực hiện, nhưng là một cơn ác mộng cần quản lý. Vấn đề chính là khi bạn có quá nhiều bản sao của mã nguồn, thật khó để hiểu đâu là đường cơ sở chính xác để sản xuất. Vì lợi ích thiết thực, bạn phải trở thành một luồng duy nhất.

Đây là những gì bạn cần đưa vào phân tích của bạn về các lựa chọn thay thế.


Không, người dân ở đây không coi bộ phận CNTT là một phần quan trọng của công việc. Họ coi đó là một thứ yếu, một bộ phận chỉ là một dịch vụ cho các bộ phận khác. Vì vậy, nó có thể bị ảnh hưởng :)
Vlad

4
@Vlad, bạn đã điều tra xem tài nguyên máy chủ của nó bị hạn chế hay chính ứng dụng? Nếu đó là tài nguyên máy chủ, bạn có thể sử dụng git trong chế độ tệp và nó sẽ tốt hơn nhiều so với thực hiện theo cách khó khăn (tức là thời đại 70).
Berin Loritsch

5
Tôi đã nhận được một chặng đường dài với việc giáo dục khách hàng của mình những chi phí liên quan đến quyết định của họ. Một phân tích về các lựa chọn thay thế là một cách tuyệt vời để truyền đạt ý nghĩa của những quyết định đó. Chắc chắn, đó là rất nhiều công việc, nhưng một vài ngày tài liệu và chỉnh sửa có thể giúp bạn tiết kiệm nhiều tuần đau lòng và đau đầu sau này.
Berin Loritsch

9

Đưa ra các ràng buộc mà bạn đề cập trong các nhận xét (ví dụ: không thể truy cập trang tải xuống Git, nền tảng Windows và sử dụng Visual Studio 2005), tôi có thể thấy 2 tùy chọn, cả hai tùy chọn mà tôi đã sử dụng trước đây trong tình huống tương tự:

  1. Sử dụng Visual SourceSafe như Emerson gợi ý trong một bình luận. Tôi đã làm việc với một nhóm sử dụng VS 2005 vài năm trước, trong khi hầu hết các công ty còn lại đang sử dụng kiểm soát phiên bản tiêu chuẩn trong Linux / Unix và họ vui vẻ sử dụng Visual SourceSafe cho CM của họ. Nó khá lỗi thời vào thời điểm này, nhưng tốt hơn là không có gì.
  2. Nói về điều tốt hơn là không có gì, bản thân tôi đã ở trong một ràng buộc tương tự. Nếu bạn thậm chí không thể sử dụng VSS (có lẽ plugin chưa được cài đặt?) Và vì bạn nói có rất nhiều dung lượng lưu trữ có sẵn, hy vọng bạn được phép sử dụng một số phần mềm. Tôi đã thực hiện một giao thức kiểm soát phiên bản dựa trên tập tin thủ công. Vào cuối mỗi ngày làm việc, tôi sẽ sao chép cơ sở mã của mình vào một thư mục đóng dấu ngày mới. Nếu tôi cần tham khảo lại công việc trước đó (hoặc quay lại), tôi sẽ xem các thư mục ngày trước để tìm thay đổi tôi cần. Vì bạn có sẵn Visual Studio, trong vài giờ, bạn có thể sử dụng VS 2005 để viết một công cụ đơn giản để giúp bạn tự động tạo thư mục và sao chép tệp.

1
Tôi + 1ed cho tùy chọn đầu tiên của bạn. Lựa chọn thứ hai của bạn làm cho tôi muốn ném lên. Nhưng tôi hiểu.
jpmc26

@ jpmc26 Đôi khi bạn chỉ làm việc trong một môi trường hạn chế vào những năm 1990 (hoặc cảm thấy như bị mắc kẹt trong những năm 1990) và bạn thực sự không có lựa chọn nào khác. Không dễ chịu, nhưng tốt hơn là không có gì.
Ogre Psalm33

8

Họ có hàng tấn không gian lưu trữ

Bạn có được phép sử dụng nó theo quyết định của bạn?

Nếu vậy bạn có thể tạo một kho lưu trữ từ xa hệ thống tập tin tốt hơn không có gì. Nhược điểm là việc đẩy trở nên chậm trong khi dự án đang phát triển vì gitcần tải xuống toàn bộ kho lưu trữ để tìm kiếm các thay đổi ...

Cho đến nay các máy tính hoạt động như người dùng thông thường, cấm tôi cài đặt phần mềm của bên thứ ba.

gitcũng là một ứng dụng di động để bạn có thể cài đặt nó trong đường dẫn $ HOME hoặc% USERPROFILE%.


Kết luận: Tôi sẽ không để họ cấm tôi sử dụng SCM 1 . Tôi sẽ sử dụng nó "riêng tư". Sau tất cả, không ai có thể biết liệu mã của bạn đã được phát triển có hoặc không được kiểm tra ở đâu đó ...

1 ) khi tôi bắt đầu sử dụng gitvài năm trước, khách hàng của tôi thích một SCM khác khá chậm và không đáng tin cậy (đó là loại NOGO cho SCM sau tất cả (o;). Tôi đã sử dụng git"riêng tư" trên đầu SCM khác với một điều khiển từ xa "dựa trên tập tin" trên một chia sẻ mạng và chỉ đăng nhập vào SCM của họ sau khi một phiên bản mới của sản phẩm đã được phát hành.


3
Tôi không thể mở trang web từ đâu để tải xuống Git. Và khi cài đặt Visual SVN Server, nó không thành công ở bước cuối cùng với quyền trên PC này.
Vlad

3
@Vlad có bị giới hạn bởi tường lửa của công ty bạn không? Bạn có được phép kết nối một thanh USB không? Là liên kết này có thể truy cập? github.com/shablesunge/GitPortable/release/doad/ từ
Timothy Truckle

3
Tôi không được phép cắm các thiết bị lưu trữ USB, ngoài việc sạc điện thoại thông minh của tôi.
Vlad

18
Bỏ qua các biện pháp bảo vệ chống lại việc đưa mọi thứ vào máy tính của công ty, bất kể những thứ đó có hợp lý đến đâu, sẽ khiến bạn bị sa thải và thậm chí có thể khiến bạn gặp rắc rối pháp lý. Đừng làm thế!
Sebastian Redl

2
@Vlad Ý tôi là, như một cách truy cập trình cài đặt cho git. như Sebastian Redl nói, hãy đảm bảo rằng bạn được phép chạy phần mềm trên máy trước.
Baldrickk

7

Môi trường của bạn

Trước hết, tôi sẽ không quá bi quan như thể hiện trong nhiều bình luận và câu trả lời. Vâng, đây là "thời kỳ đồ đá", nhưng có những trường hợp tồi tệ hơn nhiều . Nếu môi trường làm việc tổng thể của bạn (đồng nghiệp, địa điểm, trả lương, công việc lập trình thú vị, v.v.) vẫn ổn và theo sở thích của bạn, thì bằng mọi cách hãy gắn bó với nó. Về CNTT, nó là những gì nó được. Điều này không chỉ xảy ra trong các cơ quan chính phủ, mà còn trong ngân hàng, bảo hiểm hoặc bất cứ nơi nào có sự tập trung rất lớn vào an ninh, hoặc các cấu trúc rất cũ.

Lắp một thanh USB và chạy một số .exe từ đó sẽ là nguyên nhân ngay lập tức cho việc chấm dứt ở những nơi khác, vì vậy tôi không khuyên bạn nên cố gắng phá vỡ bất cứ điều gì.

Hãy thử git một lần nữa

Bây giờ trên sự lựa chọn của bạn. Tôi rất muốn giới thiệu git thay vì svn cho bạn. Nếu bạn đang thực hiện các dự án một người, thì git chỉ là một thư mục cục bộ .gitbên trong ứng dụng gốc của bạn, không có gì khác.

Đừng hỏi sếp / IT về "SCM", mà hãy hỏi họ cụ thể để cài đặt gittrên máy của bạn để bạn có thể phát triển nhanh hơn và với chất lượng cao hơn. Hãy nói rõ với họ rằng bạn không muốn đẩy mã của mình sang một nơi khác, rằng bạn không cần một máy chủ đang chạy ở đâu đó và nó sẽ không sử dụng hết dung lượng hoặc thời gian bảo trì đáng kể.

Git sẽ tăng tốc độ và chất lượng cho bạn đơn giản vì bạn có thể làm việc với sự tự tin hơn (vì bạn có thể hoàn tác mọi thay đổi bạn đã làm) và cho phép bạn làm việc trên nhiều chi nhánh cùng một lúc. Tức là, nếu bạn đang thực hiện một nhiệm vụ lớn, và một cái gì đó xuất hiện cần sự chú ý ngay lập tức của bạn, bạn có thể chuyển sang một nhánh mới, nhanh chóng khắc phục điều đó và sau đó quay lại với nhiệm vụ dài hạn.

Làm thủ công

Nếu hoàn toàn không thể, thì tất nhiên bạn có thể thực hiện kiểm soát nguồn thủ công. Tạo "thẻ" thủ công bằng cách tự sao chép mã của bạn (có thể tạo một thư mục mới với ngày / giờ và mô tả ngắn về những gì đã thay đổi). Giữ một Changelog với các danh sách đã hủy bỏ không chỉ các thay đổi của bạn, mà cả các tệp bạn đã thay đổi và thậm chí có thể có nhiều chi tiết hơn.

Tạo "các nhánh" bằng cách, một lần nữa, sao chép công việc của bạn và khi đến lúc hợp nhất trở lại, sáng tạo bằng một số công cụ "diff" hoặc "diff3" tùy ý - Tôi không biết nếu bạn có sẵn, bạn sẽ phải tìm ra.

Nếu tất cả những điều này làm bạn tốn nhiều thời gian, thì hãy xem xét kỹ xem nó có thực sự xứng đáng để bạn mô phỏng SCM hay không. Nếu bạn thấy rằng nó giá trị nó, sau đó nói chuyện với sếp của bạn một lần nữa. Cho anh ấy thấy những lợi ích của SCM thủ công của bạn (không chỉ là "Tôi có một bản sao của tất cả các công việc cũ của tôi" mà là "khi lỗi XYZ xảy ra, tôi đã có thể tìm thấy lý do ngay lập tức, 5 bản phát hành trước"). Sau đó nói với họ điều này sẽ nhanh hơn bao nhiêu với git.

Rõ ràng, nếu điều này khiến bạn phát điên, tìm kiếm một công việc luôn là một lựa chọn.


5

Tôi nghĩ rằng rất nhiều người ở đây đang thiếu "tổ chức chính phủ" của câu hỏi này. Một số mạng chính phủ có các quy định rất nghiêm ngặt đối với phần mềm được phép sử dụng và vi phạm các quy tắc đó là một hành vi phạm tội có thể xảy ra, thậm chí có thể là tội phạm. Tôi sẽ đẩy nó thông qua quản lý để xem liệu bạn có thể nhận được một số chuyển động được chấp nhận khi cài đặt phần mềm không. Tôi sẽ không đi cao bồi và tự cài đặt công cụ. Nếu bạn đang chạy Linux / UNIX, hãy xem RCS (lệnh ci / co) hoặc SCCS (lệnh sccs) đã được cài đặt chưa. Đây là những công cụ SCM cũ đã từng khá chuẩn. Nó không đẹp nhưng tốt hơn những gì tôi sắp viết dưới đây. :)

Vì bạn có "nhiều" dung lượng đĩa, hãy tạo cây nguồn. Những điều cơ bản của SCM trên quy mô nhỏ là gì? Có thể kiểm tra các thay đổi, xem xét những gì đã thay đổi, gắn thẻ và quay lại các phiên bản cũ nếu cần thiết. Một cấp trên cây nguồn, tạo Makefile hoặc script, tùy thuộc vào những gì bạn có sẵn, đó là những điều sau đây (đây là các phiên bản Linux / UNIX, các lệnh Windows sẽ khác nhau)

thực hiện đăng ký - cp -a nguồn-cây nguồn-cây-ngày (ít nhất là đến phút, nếu không phải là thứ hai, chẳng hạn như nguồn-cây-20171205115433)

tạo trạng thái - diff -R source-tree source-tree-date | ít hơn (sẽ có một chút logic ở đây, mặc định cho bản sao lưu gần đây nhất hoặc đưa ra một đối số để khác với phiên bản

tạo thẻ - ln -s source-tree-date release1.0 (tạo liên kết đến một phiên bản cụ thể)

thực hiện hoàn nguyên - rm -r source-tree && cp -a source-tree-date source-tree


1
Các lệnh Windows sẽ khác - Tôi đoán nếu bạn cung cấp các lệnh tương đương trong windows thì sẽ là một câu trả lời tốt cho câu hỏi; Tôi tin rằng hệ điều hành được sử dụng ở đây là windows (vì VS 2005).
Emerson Cardoso

1
FWIW, diff không tồn tại trong Windows. Thứ gần nhất có vẻ là fc.exe, chỉ hoạt động trên hai tệp (không phải trên thư mục). Tất cả phần còn lại có các đối tác đơn giản.
fede s.

4

Bán cho họ

Bạn đã để lại nhận xét này :

Họ có một ổ đĩa mạng mà tôi không biết làm thế nào nhưng nó tạo ra các bản sao lưu theo thời gian. Đúng. Tôi sử dụng nó và tôi lưu trữ các ứng dụng của tôi ở đó.

Đi đến cấp trên của bạn và nói điều gì đó trong tĩnh mạch này:

Ông chủ, tôi nhận thấy chúng tôi có một hệ thống nơi chúng tôi đặt các ứng dụng vào ổ đĩa mạng và một số loại dịch vụ giúp sao lưu và theo dõi lịch sử. Đối với tôi có vẻ như chúng ta chỉ thực hiện hệ thống kiểm soát nguồn của riêng mình bằng cách này. Chúng tôi có thể có thể giải phóng rất nhiều không gian và làm cho toàn bộ hệ thống đơn giản hơn rất nhiều bằng cách chuyển sang một hệ thống quản lý kiểm soát nguồn chuyên dụng, như SVN hoặc git. Chúng tôi sẽ nhận được rất nhiều lợi ích: sao lưu đơn giản hơn các phiên bản lịch sử, các công cụ để hiểu những thay đổi được thực hiện cho các tệp theo thời gian (thông tin rất hữu ích để gỡ lỗi), cách dễ dàng hơn để hoàn tác các lỗi và cách dễ dàng hơn để kết hợp các thay đổi của mọi người.

Tôi đã sử dụng các loại hệ thống này trước đây và chúng rất giỏi trong nhiệm vụ mà thiết lập tùy chỉnh của chúng tôi đang thực hiện. Rất khó để phạm sai lầm với họ so với hệ thống hiện tại của chúng tôi. Họ cũng rất trưởng thành và sử dụng rộng rãi các công nghệ; những công cụ này đã được sử dụng rộng rãi trong hơn 20 năm. Và trên hết, chúng ta có thể sử dụng phần mềm phổ biến nhất mà không phải trả một khoản tiền nào trong việc cấp phép.

Tôi rất vui khi được giúp chọn một khách hàng và một máy chủ và thiết lập chúng. Tôi hy vọng sẽ chỉ mất [insert estimate here]vài giờ để cài đặt nó nếu tôi có thể có được một máy. Bất kỳ máy nào cũng có thể làm được, ngay cả một máy tính để bàn cũ sắp nghỉ hưu, miễn là chúng ta có thể truy cập nó qua mạng.

Tóm tắt cấp cao ở đây là bạn cần đặt nó theo thuật ngữ họ có thể hiểu và có khả năng nghĩ là đáng giá:

  • Giải phóng tài nguyên (phần cứng và con người) cho các mục đích khác
  • Rủi ro thấp hơn (lỗi của con người, công nghệ ổn định)
  • Tăng năng suất
  • Chi phí nhỏ để thực hiện

Cấp trên của bạn không phải là dân kỹ thuật và họ không quan tâm đến các vấn đề kỹ thuật. Nhưng nếu bạn có thể giải quyết vấn đề về tiền bạc và những thứ tốn tiền, đôi tai của họ có thể sẽ tăng lên một chút.


1

Chà, sau khi đọc câu hỏi của bạn và rất nhiều bình luận, tôi hiểu rằng bạn có những ràng buộc / kịch bản sau:

  • 1 người mỗi dự án;
  • bạn chỉ đơn giản là không thể sử dụng các công cụ bên ngoài ngoài Visual Studio 2005 cho dự án của bạn; bạn không thể sử dụng GIT hoặc bất kỳ SCM nào khác;
  • trong khi làm việc tại địa phương, bạn không thể để dự án ở một số trạng thái bị hỏng, bởi vì thỉnh thoảng bạn có sao lưu tự động và bạn cần làm cho nó hoạt động mọi lúc;
  • bạn cần một số lịch sử để theo dõi các thay đổi;

Nếu bạn không thể sử dụng Visual Source Safe (có plugin để hoạt động với VS 2005), thì bạn có thể sử dụng một cách tiếp cận khác.

Dựa trên các mục trên, tôi khuyên bạn nên sắp xếp các thư mục dự án của mình như dưới đây:

trunk           //last functional version of the app. IMPORTANT: YOU DON'T WORK WITH THIS FOLDER
    UnitTests   //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln
temp              //your working folder; has structure similar to trunk; changes will be commited to trunk;
    UnitTests     //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln  
build
    .history    //folder to contain changes in files and your comment (like commits in git)
    build.bat   //calls MSBuild to build temp\YourProject.sln, and run all unit tests
    save_on_trunk.bat   //if build is working, saves info from "diff.bat" in folder within ".history" with timestamp, and also overrides "trunk" with content from "temp"
    diff.bat         //compares files from "temp" and "trunk", using "dir" and "fc" commands
    history.bat  //outputs content from .history folder (contains file changes and comments)

Các quy tắc cơ bản để làm theo ở đây:

  • kiểm soát mã của bạn sẽ được thực hiện trong thư mục của dự án;
  • bạn không bao giờ làm việc trong "thân cây";
  • bạn làm việc trong "temp" , thực hiện các bài kiểm tra đơn vị , gọi build.bat và sau đó save_on_trunk.bat ;
  • QUAN TRỌNG: thực hiện các bài kiểm tra đơn vị chạy trong sự cô lập hoàn toàn; bạn cần điều này để đảm bảo rằng mã mới sẽ không phá vỡ thân cây;
  • vì bạn có bản sao lưu tự động, cơ hội mất mã sẽ nhỏ hơn; do đó, bạn chỉ cần làm cho mã "thân cây" luôn ở trạng thái hoạt động.

1
Tôi vui lòng yêu cầu downvoter cung cấp một số phản hồi ở đây. Tôi muốn cải thiện câu trả lời của mình cho câu hỏi " Duy trì chất lượng mã mà không cần SCM ? ".
Emerson Cardoso

1

Bạn đã hết các giải pháp kỹ thuật. Chỉ còn các giải pháp chính trị.

1) Liên minh các nhà phát triển. Nếu đã có một liên minh, hãy thách thức vị trí của họ là không đại diện công bằng cho lớp nhân viên là một nhà phát triển. Nếu thành lập một liên minh các nhà phát triển không giành được sự hỗ trợ của một nửa các nhà phát triển, GO. Bạn là một phù hợp xấu.

2) Quảng cáo trên báo. Nếu chính phủ của bạn không đảm bảo tự do ngôn luận là vấn đề được pháp luật công nhận, điều này sẽ khiến bạn bị sa thải.


1
1) với tư cách là một thành viên tích cực trong một công đoàn, tôi có thể nói rằng công đoàn hoàn toàn không thể làm gì về điều đó. Mục đích của công đoàn là kiểm soát thương lượng tập thể và đảm bảo rằng thỏa thuận tập thể không bị chủ nhân vi phạm. Tùy thuộc vào nhà tuyển dụng, bạn thực sự có thể bị sa thải vì cố gắng thành lập công đoàn nếu ban quản lý nắm bắt được điều đó. 2) Ngay cả khi quốc gia đảm bảo phát ngôn miễn phí cho người dân, với tư cách là nhân viên, bạn vẫn không thể chạy đến phương tiện truyền thông. Bạn chắc chắn có thể là lửa cho điều này.
SaggingRufus

1
Câu trả lời này là thua, thua hoàn cảnh.
SaggingRufus

@SaggingRufus: Các công đoàn hoàn toàn có thể yêu cầu họ được cung cấp các công cụ phù hợp cho công việc. Người sử dụng lao động không thể lên phương tiện truyền thông cho một công ty tư nhân, nhưng một đơn vị chính phủ có thể phải chịu trách nhiệm theo cách đó.
Joshua

1
Là một người làm việc cho một công đoàn trong một công ty công nghệ, tôi có thể đảm bảo với bạn, chúng tôi hoàn toàn 0 nói. Trừ khi nó trở thành một vấn đề sức khỏe và an toàn, công đoàn không có chỗ đứng. Tôi đồng ý với bạn ở một mức độ nào đó. Nếu đây không phải là phần mềm "công cụ phù hợp cho công việc" thì phần bình luận sẽ đúng. Ví dụ, giả sử bạn là một thợ mộc trong một công đoàn và chủ lao động của bạn đã từ chối mua cho bạn một cái thang và nói rằng bạn cần phải xếp 7 chiếc ghế lên nhau để leo lên. THÌ bạn có thể nói rằng đó là nghĩa vụ của nhà tuyển dụng để cung cấp cho bạn các công cụ thích hợp. Tại thời điểm này, nó đã trở thành một vấn đề an toàn.
SaggingRufus

0

Git cho Windows có phiên bản "di động" . Bạn có thể sao chép nó vào PC hoặc giữ nó trên thẻ nhớ mà không cần phải cài đặt bất cứ thứ gì. Nếu vấn đề chỉ đơn giản là cài đặt, đây sẽ là một cách giải quyết.

Xin lưu ý rằng nếu chúng trái ngược hoàn toàn với SCM, bạn có thể muốn hỏi những câu hỏi nhọn về ISO-9001, DO-178B hoặc các tiêu chuẩn phát triển phần mềm có liên quan khác.


1
điều này dường như chỉ lặp lại các điểm được thực hiện và giải thích trong câu trả lời trước đó đã được đăng hơn 20 giờ trước
gnat

@gnat Mình không thấy link ở đó à?
Graham

3
Bạn chỉ có thể thêm liên kết của bạn dưới dạng một nhận xét cho câu trả lời khác.
icc97

0

Chỉ cần chạy git trên một thư mục trống, không có máy chủ nào tham gia cả. Không có vấn đề gì khi không ai khác sử dụng kiểm soát phiên bản, bởi vì bạn có thể kiểm soát phiên bản thư mục của mình. Git được thiết kế cho chính xác kịch bản giới thiệu SCM lừa đảo này và nó hoạt động tốt.

Bạn sẽ trở thành anh hùng khi người thứ hai bắt đầu sử dụng nó, ngay cả khi bạn phải đợi một con khủng long nào đó đá cái xô cho nó lan rộng. Bây giờ không đủ khả năng để quản lý các cơ sở mã lớn mà không có SCM. Nó giống như điều hành một doanh nghiệp mà không kiểm toán bất cứ điều gì, thực sự.


-1

Thực tế, có ba điều riêng biệt mà bạn muốn nhấn mạnh với tư cách là nhà phát triển chuyên nghiệp: Đánh giá mã, lịch sử phiên bản và theo dõi các yêu cầu thay đổi.

Bạn có thể tự theo dõi các yêu cầu thay đổi. Không đẹp như với các công cụ phù hợp, nhưng bạn có thể. Phần thứ hai là đánh giá mã. Đối với điều đó, bạn cần bản sao trước đó của mã của bạn và một công cụ khác. Khi bạn nghĩ rằng một thay đổi đã sẵn sàng, bạn tự xem xét nó bằng cách so sánh cẩn thận với phiên bản trước, sau đó thay thế phiên bản trước bằng một phiên bản mới.

Để kiểm soát phiên bản, nếu nơi làm việc của bạn không cho phép bất kỳ giải pháp hợp lý nào, thì đó là một hộp DVD có thể ghi mà bạn cần. Mỗi khi bạn có một phiên bản mà bạn muốn giữ lại để có thể quay lại, bạn tạo một DVD mới.

(Rõ ràng tất cả những điều này không phải là lời khuyên nên được thực hiện trừ khi bạn đang ở một nơi làm việc thực sự tồi tệ như OP rõ ràng là).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.