2012-04-19 29 views
9

Không giống như Eclipse hoặc các IDE khác, Xcode sẽ sửa đổi tệp .xcodeproj bất cứ lúc nào nó phát hiện thấy một tệp hoặc nhóm trong dự án được thêm, đổi tên hoặc loại bỏ. Điều này là rất bất tiện khi có nhiều hơn một nhà phát triển làm việc trên dự án. Khi các công cụ SCM của tôi phàn nàn về các xung đột về tệp .xcodeproj, tất cả những gì tôi có thể làm là kiểm tra một bản sao khác của toàn bộ dự án và hợp nhất tất cả các thay đổi tôi đã thực hiện và cầu nguyện rằng không ai 'nhanh' hơn I.Làm thế nào để tránh việc sửa đổi tệp dự án (.xcodeproj) của Xcode thường xuyên được nhóm làm việc?

Có giải pháp thay thế chiến lược mặc định của Xcode không?

Trả lời

0

Đó không phải là sự truy đòi duy nhất của bạn. Tệp .xcodeproj là văn bản. Định dạng không quá khó hiểu. Cách thông thường để giải quyết xung đột là lấy cả hai bộ bổ sung (mặc dù có, tất nhiên, ngoại lệ).

1

Từ những gì tôi hiểu, .xcodeproj thực sự là trình bao bọc cho một số tệp, bao gồm tệp .pbxuser và .pbxproj. Không biết bạn đang sử dụng SCM, nhưng chủ đề này đã được xúc động trên here đối với những người sử dụng git và sự đồng thuận dường như là tệp .pbxuser cũng như nhiều người khác không được bao gồm trong điều khiển phiên bản.

0
  1. Thoát xcode
  2. Mở thiết bị đầu cuối.
  3. Navigate to /.xcodeproj/project.xcworkspace
  4. loại: mv contents.xcworkspacedata contents.xcworkspacedata.bak
  5. restart xcode
0

Những gì chúng ta làm theo nhóm để tránh những xung đột trong hồ sơ này, là để thực hiện tất cả các tệp ngoại trừ tệp dự án. Trong trường hợp này mọi thứ vẫn an toàn. Bạn có thể tránh cập nhật nếu bạn chỉ muốn tệp dự án của riêng mình hoặc thậm chí bao gồm tệp trong tệp .gitignore để tệp được bỏ qua tự động.

######################### 
# .gitignore file for Xcode4/OS X Source projects 
# 
# Version 2.0 
# For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects 
# 
# 2013 updates: 
# - fixed the broken "save personal Schemes" 
# 
# NB: if you are storing "built" products, this WILL NOT WORK, 
# and you should use a different .gitignore (or none at all) 
# This file is for SOURCE projects, where there are many extra 
# files that we want to exclude 
# 
######################### 

##### 
# OS X temporary files that should never be committed 

.DS_Store 
*.swp 
*.lock 
profile 


#### 
# Xcode temporary files that should never be committed 
# 
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this... 

*~.nib 


#### 
# Xcode build files - 
# 
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData" 

DerivedData/ 

# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build" 

build/ 


##### 
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups) 
# 
# This is complicated: 
# 
# SOMETIMES you need to put this file in version control. 
# Apple designed it poorly - if you use "custom executables", they are 
# saved in this file. 
# 99% of projects do NOT use those, so they do NOT want to version control this file. 
# ..but if you're in the 1%, comment out the line "*.pbxuser" 

*.pbxuser 
*.mode1v3 
*.mode2v3 
*.perspectivev3 
# NB: also, whitelist the default ones, some projects need to use these 
!default.pbxuser 
!default.mode1v3 
!default.mode2v3 
!default.perspectivev3 


#### 
# Xcode 4 - semi-personal settings 
# 
# 
# OPTION 1: --------------------------------- 
# throw away ALL personal settings (including custom schemes! 
# - unless they are "shared") 
# 
# NB: this is exclusive with OPTION 2 below 
xcuserdata 

# OPTION 2: --------------------------------- 
# get rid of ALL personal settings, but KEEP SOME OF THEM 
# - NB: you must manually uncomment the bits you want to keep 
# 
# NB: this is exclusive with OPTION 1 above 
# 
#xcuserdata/**/* 

# (requires option 2 above): Personal Schemes 
# 
#!xcuserdata/**/xcschemes/* 

#### 
# XCode 4 workspaces - more detailed 
# 
# Workspaces are important! They are a core feature of Xcode - don't exclude them :) 
# 
# Workspace layout is quite spammy. For reference: 
# 
# /(root)/ 
# /(project-name).xcodeproj/ 
# project.pbxproj 
# /project.xcworkspace/ 
# contents.xcworkspacedata 
# /xcuserdata/ 
# /(your name)/xcuserdatad/ 
# UserInterfaceState.xcuserstate 
# /xcsshareddata/ 
# /xcschemes/ 
# (shared scheme name).xcscheme 
# /xcuserdata/ 
# /(your name)/xcuserdatad/ 
# (private scheme).xcscheme 
# xcschememanagement.plist 
# 
# 

#### 
# Xcode 4 - Deprecated classes 
# 
# Allegedly, if you manually "deprecate" your classes, they get moved here. 
# 
# We're using source-control, so this is a "feature" that we do not want! 

*.moved-aside 


#### 
# UNKNOWN: recommended by others, but I can't discover what these files are 
# 
# ...none. Everything is now explained. 
2

Không giống như Eclipse hoặc IDE khác, Xcode sẽ sửa đổi các tập tin .xcodeproj bất cứ lúc nào mà nó tìm thấy rằng một tập tin hoặc một nhóm trong dự án được bổ sung, đổi tên hoặc loại bỏ.

Không giống Eclipse và một số IDE khác, Xcode duy trì danh sách các tệp trong dự án và cấu trúc nhóm như một phần của tệp "dự án" (tệp .xcodeproj thực sự là thư mục). Các nhóm không phải tồn tại vật lý như các thư mục và các tệp thực sự có thể ở tất cả các loại địa điểm và không phải được đặt tên như chúng xuất hiện trong Xcode.

Nếu ai đó thêm tệp mới vào dự án hoặc xóa tệp khỏi dự án hoặc thay đổi tên của tệp hoặc nhóm, điều này cần được phản ánh trong SCM của bạn vì ai đó đang kiểm tra bản sao hoặc nhân bản kho lưu trữ của bạn hoặc bất kỳ thứ gì có xu hướng thích nó tốt hơn nếu dự án được đồng bộ với những gì trên đĩa. Vì vậy, ví dụ, nếu ai đó loại bỏ một tập tin nhưng thay đổi đó không được phản ánh trong tập tin dự án Xcode của người khác, họ sẽ nhận được lỗi biên dịch sau khi họ cập nhật/đồng bộ/kéo hoặc bất cứ điều gì.

Có nói rằng, tệp dự án cũng chứa tải trọng cài đặt người dùng không quan trọng. Trong Xcode 4.x tôi đặt các thư mục sau đây để được bỏ qua bởi SCM của tôi:

foo.xcodeproj/project.xcworkspace/xcuserdata 
foo.xcodeproj/xcuserdata 

Trong hồ sơ dự án phiên bản trước đó tôi đã sử dụng để thiết lập sau đây để được bỏ qua:

foo.xcodeproj/*.pbxuser 
foo.xcodeproj/*.mode1v3 

Đó dường như để lọc ra vô nghĩa không cần thiết như xa như SCM là có liên quan.

0

Là một chiến thuật để tránh hợp nhất xung đột: Bạn sẽ nhận được xung đột yêu cầu phối hợp thủ công đau đớn nếu hai người dùng thay đổi tệp ở cùng một vị trí. Điều đó xảy ra, ví dụ: nếu hai người dùng thêm tệp vào cuối nhóm, vì cả hai thay đổi đều ở cùng một nơi. Nếu mọi người thêm tệp mới ở một vị trí khác (ví dụ theo thứ tự bảng chữ cái) thì sẽ không có sự hợp nhất xung đột. Hoặc ít nhất ít hơn.

Các vấn đề liên quan