יש לכם blacklist של דברים שלא נכנסים לsource control?

TakeCtrl

New member
יש לכם blacklist של דברים שלא נכנסים לsource control?

לנו למשל יש כלל (שהייתי נגדו), שלא מכניסים קבצים שקשורים לIDE (כגון iml) כך שכל פעם שפותחים שמורידים את כל הקוד מbranch צריך לבנות אותם מחדש .

כמו קבצים כגון log4j.xml רק מועברים לכזה רשימה.
 

user32

Well-known member
מנהל
כלל מוכר ומוצדק

למה שקבצי IDE יהיו משותפים לכולם? אנשים עובדים עם IDE שונים, מערכות הפעלה שונות, מבנה תיקיות שונה, ואז איזה חכם מחליט להעלות קובץ IML וכולם צריכים לשבור את הראש בכל עדכון איך למזג בצורה כזאת שהתצורה הרגילה שלהם תשמר ובלי שיהיה קונפליקט.
קבצים מקומפלים אני משתדל לא להכניס. יש פתרון כמעט לכל מצב בהקשר הזה.
 

יבגני34

New member
ועבור אילו שמפתחים ב-XCODE?

ה-IDE זה גם סביבת הבילד, כל הפרוייקט תכלס תלוי בסביבת הבילד,
&nbsp
לכן אנחנו חייבים אותו כחלק מה-sourc control
אגב אם יש למישהו הצעה איך מפתחים ב-XCODE ולהוריד את תקורת ה-
merge
אשמח מאד לשמוע
 

Lhuna1

New member
תכל'ס איזו תקורה יש לכם?

אצלנו עובדים מספר אנשים עם XCODE ואין בעיה מיוחדת במרג'ים (GIT).
הגדרות הבילד זהות לכל מי שעובד על אותו הפרויקט, אין סיבה שאחד יקמפל אחרת מהשני.
אם אני מדליקה איזה דגל מיוחד בקומפילציה לצורכי דיבאג, אני זוכרת לכבות אותו לפני פוש. זה נכון שעקרונית יכולות להכנס ככה בעיות וצריך להזהר, אבל בפועל זה לא ממש קורה (לא קרה מעולם עד היום לפחות).
&nbsp
&nbsp
 

יבגני34

New member
ושינויי סכימה הוספת קבצים?

במיוחד שהפרוייקט חדש, כמה עובדים על אותה סכימה ומתחילות הצרות
 

Lhuna1

New member
שינויי סכימה עושים לעיתים נדירות מאוד

מחיקה/הוספה של קבצים לפרויקט לרוב עוברת את המרג' האוטומאטי. לפעמים יש קונפליקטים אבל לא הרבה, וקלים לפתרון. אם אתם בפרויקט חדש לגמרי אז אני יכולה להבין שבאמת יהיו יותר בעיות כאלו.
&nbsp
בעיה משמעותית יותר היא כשמשנים בו"ז את אותו XIB, את זה המרג' תמיד ידפוק - ואפילו ידנית לפעמים זה קשה מאוד למרג'ג'. אנחנו משתדלים לא לעשות את זה (וכיוון שאנחנו בינתיים מעט מפתחים ויושבים יחד זה לא קשה).
&nbsp
אני לא יודעת כמה אנשים אתם על הפרויקט, אבל מציעה לכם גם פשוט להמנע מלעבוד בו"ז על סכימה, אין בזה לרוב צורך אמיתי (מה אתם כבר משנים שם כל כך הרבה?)
&nbsp
 

choo

Active member
שיקלו לעבוד עם makefile בתור external target

&nbsp
ה-merge שם נוטה להיות די פשוט
 

BravoMan

Active member
מצאתי מקור נהדר לקבצי דוגמה כאלה:

אומנם אלה הם ספציפית ל-git, אבל אפשר ללמוד מהם, ולהמיר אותם לכל SC:
https://github.com/github/gitignore
&nbsp
בגדול, חשוב להימנע מהכללת תוצרים בינאריים. זה ינפח את המאגר לשווא וגם יראה שינויים היכן שאין באמת כאלה (לא שינית כלום בקוד, אבל ה-time stamp של ה-build השתנה).
&nbsp
לגבי קבצי סביבת פיתוח - אם אתה ורק אתה עובד על הפרויקט ממחשב בודד, אז ניחה.
ברגע שיש עוד אנשים, זו צרה צרורה.
לרוב, סביבות פיתוח מכניסות נתיב אובסולוטי לחלק מקבצי הקונפיגורציה שלהן, ואז מספיק ששם המשתמש במחשב שלך שונה משם משתמש של האדם האחרון שעשה commit, ואתה מקבל errors בפתיחת פרויקט.
&nbsp
רוב סביבות פיתוח שעבדתי איתן יודעות לייבא פרויקטים ישירות מסוגים רבים של source control, כך שאין צורך בעבודה מיוחדת כדי להשלים קבצי קונפיגורציה.
הסביבה תעשה checkout ותשלים בעצמה את הקבצים לפי קונפיגורציה מקומית שלך.
 

TakeCtrl

New member
לכן אני נמנע מלהכנס נתיבים בhardcode ל intelij

יש שמות לוגיים (ולeclipse יש בטוח יותר)
הבעיה יותר בעיקר בlauncher שאתה צריך ליצור כל פעם מחדש.
 

BravoMan

Active member
לא יודע על מה אתה מדבר - איזה launcher?

כמו שכבר כתבתי, אני לא עוסק בפיתוח צד שרת, אבל כן עובד ועבדתי הרבה עם Eclipse ועם IntelliJ בבגדים של Android Studio.
&nbsp
האחרון, בכלל לא שואל איך לרשום את הנתיבים בקבצי קונפיגורציה שלו. אולי יש לזה הגדרה אי שם בנבחי מסכי ההגדרות, אבל זה לא משנה.
גם נתיב יחסי עלול לדפוק אותך, כשאתה עובר ממחשב למחשב.
&nbsp
וכאמור, לשתי הסביבות לא צריך ליצור כלום ידנית אם אומרים לסביבה עצמה לייבא פרויקט מ-CVS.
&nbsp
אגב, המצב שאתה מתאר נכון רק אם אתה כל הזמן מוחק את תיקיית העבודה שלך.
למה שתגיע למצב כזה?
אתה מחליף מחשבים כל הזמן?
אין לך מספיק מקום על הכונן הקשיח?
&nbsp
מעבר בין branch אחד לאחר לא אמור למחוק לך קבצים שאינם ב-CSV.
עם איזה CSV אתם עובדים, אם מותר לשאול?
 

TakeCtrl

New member
svn, מה שקורה כמוציאים גרסה, אז מישהו יותר branch שלה..בsvn

ואז כל השאר עושים checkout של העסק במחשב שלהם..
 

BravoMan

Active member
כלומר במקום לעשות svn switch מוחקים הכל

ומתחילים מחדש?
&nbsp
טוב, כל אחד והשיטות שלו...
 

TakeCtrl

New member
מה מוחקים? הפרוייקט בtrunk נשאר,

פשוט מוסיפים עוד פרוייקט... יש לנו ספריות לכל branch.
 

BravoMan

Active member
חשבתי על זה רגע אחרי אחרי שסיימתי את ההדועה

אבל לא היה לי כוח לערוך.
&nbsp
נשמע לי קצת גן חיות, הרבה ספריות פרויקט לפי גרסאות.
מצד שני, המון זמן לא עבדתי עם svn.
&nbsp
אצלנו עובדים עם GIT. כשאתה עובר branch שום דבר לא זז לשום מקום, רק הקבצים בספריית העובדה משתנים.
&nbsp
תמיד אפשר לעשות עוד clone לספרייה נפרדת, אבל אין בזה צורך כי יש עותק repository מקומי אז לעשות checkout ל-branch לוקח קרוב ל-0 זמן.
&nbsp
אני מניח שאם עובדים ישירות מול repository מרכזי על שרת לוקח זמן לעשות checkout אז מעדיפים להחזיק branchים שונים מקומית בספריות שונות...
&nbsp
ואם אני זוכר נכון, כל עניין ה-branch ב-svn קצת מנוון ביחס לדברים יותר מודרניים כמו git.
 

הפרבולה

New member
לדעתי רצוי לכלול גם קבצים בינריים וקבצי קונפיגורציה

קבצי קונפיגורציה בד"כ לא גדולים ורצוי מאד שכל המתכנתים יעבוד באותה סביבת עבודה עם אותם קומפילרים ואותם ספריות, אחרת עלולים להווצר בעיות תאימות.
ולצמצם כמה שאפשר את קבצי הקונפיגורציה שאינם זהים אצל כל מתכנת ואותם לא לכלול.

לגבי קבצים בינריים רצוי לכלול את קובץ התוצר הסופי של הקומפילציה,בתנאי שהוא לא משתנה ( למעט אולי חתימת תאריך ) מקומפילציה חוזרת , ובתנאי שהוא לא גדול מידי (כמו למשל קבצי firmware למעבדים יעודיים מיקרו בקרים DSP וכו ).
זה מאד מאד עוזר שעושים שינויים שאינם אמורים להשפיע על הקוד כמו שינוי הערות ,שינוי מקרואים שינוי שמות משתנים וכו .... ואז מקמפלים ומשווים את קובץ התוצר עם זה הנמצא ב source control ואם הקבצים זהים סימן שלא שינינו את הקוד בטעות.
 

vinney

Well-known member
נראה לי שיטה קצת בזבזנית. חשבת על Unit Tests?

להכניס תוצר בינארי לSC צריך רק אם אתה צריך לוודא שיש לך העתק מדוייק של התוצר. למשל, אם אתה שולח חבילה ללקוח ואתה רוצה לוודא שכשאתה מדבג בעיה אתה עובד עם אותו הקוד בדיוק, והtoolchain עצמו לא בsc (אצלי למשל הtoolchain שמור בgit, כך שבהנתן תג אני יכול לשחזר בדיוק את אותו הקובץ הבינארי גם חמש שנים אחרי).
 

הפרבולה

New member
אכן אני צריך מידי פעם לוודא שיש לי העתק מדויק של המוצר

אחרי שבצעתי בו שינויים שלא אמורים לשנות את הקוד הבינרי.
זה עוזר לי גם אם אני מתעדכן בקבצי מקור שתכנת אחר עשה בו שינויים ,וקימפל ובדק ב unit test שלו. אז אני מקמפל אצלי ומוודא שיצא לי אותו קוד בינרי כמו שיצא לו, ואם זה לא זהה אז כנראה לא התעדכני עם קבצי המקור הנכונים או לא עם כולם או שהוא שכח להעביר לsource control חלק מקבצי המקור וכולי.
&nbsp
&nbsp
 

vinney

Well-known member
נראה לי קצת עקום, אבל שיהיה...


 

Grosseto

New member
אולי כדאי שתמנע מדיונים טכניים?

תתייעץ עם מנהל הפורום
 
למעלה