عندما يتعلق الأمر بالتطوير لجهاز iPhone، هل يجب أن أستخدم Git أو Subversion؟

StackOverflow https://stackoverflow.com/questions/1213844

سؤال

يبدو لي أن النموذج المركزي لـ Subversion يعمل بشكل أفضل لتطوير تطبيقات الويب حيث يكون لديك فريق من المهندسين يعملون حاليًا على نفس قاعدة التعليمات البرمجية ويطلقونها باستمرار.

من ناحية أخرى، يعد نموذج Git الموزع جذابًا لتطبيق IPhone لأنه 1) لا أحتاج إلى اتصال لتصفح المستودع 2) إنه أسرع كثيرًا 3) ستتم مشاركة التطوير ولكن ليس كثيرًا.

آسف إذا أجبت على سؤالي ولم أقصد إثارة النقاش، فلا تتردد في تقديم إجابات من سطر واحد.

هل كانت مفيدة؟

المحلول

وبالتأكيد بوابة. تعلمت شيئين جديدة هذا العام: برمجة فون وبوابة. في حين حققت البرمجة فون لي أكره حياتي، تحسنت بوابة الطريق I تطوير البرمجيات. يعني المتفرعة مؤلم أستطيع أن جعل فرع ل <م> كل شيء ، دون أن يخبر بقية العالم، وعندما أنا راض تماما مع ذلك يمكنني دمج إعادته إلى لدينا مستقرة رائعة السيد / الجذع.

وانه لشيء رائع، وليس هناك ضغط للافراج عن كل ما هو غير جاهز ورؤية كما يمكنك أن تحقق في محليا، فإنه من السهل لنحت، ويرتكب صغيرة مفيدة.

وأنا ما زلت غير محدد على شيء فون.

نصائح أخرى

ويهمني ان التصويت لصالح أي واحد التي تم تكوينها في مجموعتكم.

وهناك شيء واحد يجب أن ندرك حول مقابل توزيع مركزية VCS هو أن واحدة موزعة تستطيع أن تفعل كل شيء مركزي يمكن للمرء. مع بوابة، هل يمكن أن يكون مستودع عمومي واحد، وإصدار رسمي للقانون، وتمكنت في أي عدد من الطرق - على سبيل المثال، إذا يمكن لجميع المطورين دفع إلى ذلك، فإنه يكتسب كل ما تريد عن VCS مركزية، إلا جميع فوائد إضافية من بوابة وأيا من أوجه القصور في CVS / SVN.

وعلى الرغم كسكودي ديه التكامل SVN، أجد أن يكون سوء التنفيذ للغاية. يمكنك التحقق من (آسف للتورية) و إذا كنت ترغب بديل.

وأما وقد قلت ذلك، وأنا في الأساس محل رجل واحد (على الرغم من أنني استخدام جهازين) وأجد بوابة لتكون أجمل بكثير للاستخدام.

وأنا المحل رجل واحد عندما يتعلق الأمر بالتنمية اي فون، وأنا أستخدم زئبقي (والذي هو جدا، تشبه الى حد بعيد GIT). وكان بلدي العامل الحاسم ببساطة أردت أن تعلم كيفية استخدام نظام إدارة مصدر الموزعة.

والفرق الأساسي إذا كنت متجر رجل واحد هو أن كود المتفرعة ودمج هو أسهل بكثير في بوابة / زئبقي. وهناك فرق بسيط هو أن مستودعات إس يستغرق أكثر بكثير من مساحة القرص (ولكن على المشروع فون، وهذا ليس من المرجح جدا أن تكون قضية رئيسية). عدا ذلك، لم تكن المحتمل أن تلاحظ أن الكثير من الفرق.

وفيما يلي نصائح عامة بلدي على التحكم بالمصادر. التخريب هو إلى حد بعيد أداة بلدي المفضلة لديك، واحدة لدي خبرة أكثر مع. ومع ذلك، فإن أول شيء أفعله في أي عمل هو تحميل وتثبيت SVK، الذي يتيح لك الوصول إلى مستودعات قطع التخريب (منذ أعمل في الغالب من جهاز كمبيوتر محمول، وأحيانا في حديقة أو الفناء الخلفي الخاص بي مع أي وصول واي فاي).

والتخريب + SVK يمنحك أكثر من فوائد بوابة أو زئبقي أو السوق (على الرغم من أنني أشعر تقييم تلك أيضا). وأعتقد أن مستقبل التنمية في التخريب يجري لإضافة SVK / بوابة / قدرات زئبق لدعم DVCS استخدام القضية.

وهكذا أنصح NOT نشر بوابة إذا كنت تستخدم بالفعل التخريب، وبدلا من انتزاع SVK والحصول على الذهاب مع هذا (بالاضافة الى انها ناضجة جدا، انها كانت موجودة لبضع سنوات حتى الآن). الجانب السلبي هو أنها يمكن أن تكون بطيئة في بعض الأحيان (مكتوب في بيرل).

تحميل SVK

وبنيت الدعم إس في كسكودي. يمكنك تثبيت عميل أحدث يدويا.

إذا لم يكن هناك أحد يجبرك على استخدام svn، فمن الأفضل أن تستخدم git، حيث أن git يمكن أن يتفاعل مع svn (مما يعني، من الناحية الفنية، أنه يمكنك استخدام git بينما يستخدم الأشخاص الذين تعمل معهم svn؛ربما يكون هذا كثيرًا من المتاعب بالرغم من ذلك).

أما بالنسبة لتكامل XCode، فإن git لا يحتوي على أي شيء، ولكن ليس من الصعب جدًا تشغيل git باستخدام بعض ضغطات المفاتيح في XCode.لقد كتبت بعض البرامج النصية التي ستفعل ذلك لأوامر git الأكثر استخدامًا ووضعتها في البرامج النصية للمستخدم.فيما يلي مثالان:

تهيئة بوابة

#!/bin/sh
# 
# This script initializes a git repository and adds all the elements 
# of the project directory to the repository


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

cd $project_directory

# create the git project configuration files
cat << EOF > .gitignore
.gitignore
.DS_Store
.gitattributes
build/*
EOF

cat << EOF > .gitattributes
*.pbxproj -crlf -diff -merge
EOF 

/usr/local/bin/git init
/usr/local/bin/git add *

إضافة بوابة

#!/bin/sh
# 
# This script does a git adds a file of the user's choosing
# to the git repository.


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

files_to_add=`%%%{PBXUtilityScriptsPath}%%%/AskUserForExistingFileDialog "Add files"`

cd $project_directory

/usr/local/bin/git add $files_to_add

يمكنك رؤية نمط هنا يسمح لك بكتابة الآخرين بسرعة.داخل مربع حوار "البرامج النصية للمستخدم"، يمكنك تعيين تسلسلات مفاتيح للأوامر.أجد أنه في الاستخدام اليومي نادرًا ما أحتاج إلى الانتقال إلى سطر الأوامر لاستخدام git.

وأنا لا يمكن أن تعطي حقا لكم إجابة واضحة لأنني لم تستخدم CVS أو التخريب لبعض الوقت - ولكن لقد استخدمت مشاريع جيت مع مطوري فون الآخر ويعمل بشكل جيد جدا.

وهذا الخطر المحتمل الوحيد هو أنه في بعض الأحيان لديك لحل دمج الصراعات في المشروع كسكودي إذا أكثر من شخص واحد هو إضافة ملفات جديدة - ولكن أود أن أعتقد أن SVN لديهم قضايا مماثلة

إذا كنت لا تستخدم بوابة، github.com يعمل بشكل جيد جدا كمستودع - ولديهم مجموعة كبيرة من الوثائق للعمل مع جيت على ماك (هل يمكن أن مجرد زيارة هذا الجزء من الموقع للحصول على اقامة).

وكيف ترقية عميل إس في كسكودي؟ لقد فعلت ذلك في الماضي للذهاب 1،4-1،5 ولكنها كانت شاقة وصعبة، يتم توثيقها، وglitchy. لقد حاولت منذ ذلك الحين إلى التراجع عن بلدي الإختراق (الذي حطم الخادم اباتشي بلدي) وأنا الآن لا يمكن استخدامها على الإطلاق. هذا هو بعد الترقية إلى أحدث كسكودي التي من المفترض أن تدعم 1.5 أصلا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top