Score:1

Git branching strategies with a small team to develop a Drupal site

ธง in

We're a small team (5-6 developers) building a Drupal 7 site. Previously, we've used Features (https://www.drupal.org/project/features) to export our configurations from development to production. We've relied largely on assigning developers discrete, unrelated tasks.

Our upcoming work has distinct, but related development. For example, I anticipate we'll need to add fields that will be used by two different tasks (for example, think about a date field for an event. One developer is working on the email invite and the other is working on the event display page). If we are able to anticipate this overlap, we'd be able to do this before either starts work.

However, if we don't realize a common need until after work has begun in separate branches per developer/feature, this becomes trickier. I believe that we would need to merge their branches together to access the common code-which defeats the point of us having separate branches in the first place.

Curious for what you'd suggest or has worked well in the past! Thanks!

Note: I've identified these potential solutions, both with drawbacks:

  • Cherry pick commits. While this could be helpful, it's also likely that a cherry-picked commit will include extraneous changes beyond the narrow scope needed here. And it's just as likely that the single commit won't include all of the changes necessary (For example, if one commit created the feature, and a second created the field, you'd need to cherry pick both commits). This all seems to head for a merge headache down the road.

  • Create a folder within sites/all/features/ignore, manually transfer the needed features there from the other branch. Include this directory in .gitignore. I don't like that:

  1. This has our team sending features files all over outside of git,
  2. That it could introduce dependency errors if features are changed in the original, but not updated in the other places that they are used,
  3. That users may make changes to the ignored features that aren't moved into git,
  4. That switching between computers/development environments would lose these files
  5. That all related branches would need to be merged before deploying to production (which again, undermines the point of branching since these branches are now dependent on each other and would have to be released at once, rather than when ready/needed).
  • Another option is to make the change (export the feature needed or cherry-pick commits) to the parent branch (e.g., Develop or Develop-Feature) so that it's available to all child branches.
Jaypan avatar
de flag
นี่ไม่ใช่คำตอบที่คุณต้องการ แต่ด้วยความสัตย์จริง ฉันไม่แนะนำให้เริ่มเว็บไซต์ใหม่บน Drupal 7 ณ จุดนี้ EOL คือ พ.ย. 2022 เพียงหนึ่งปีและบางส่วนจากนี้ หลังจากนั้น Drupal 7 จะไม่ได้รับการอัปเดตด้านความปลอดภัยอีกต่อไป และการอัปเกรดจาก D7 -> D8 นั้นไม่ใช่เรื่องง่าย นอกจากนี้ API การจัดการการกำหนดค่าใน D8 ยังง่ายกว่าคุณลักษณะ D7 (https://www.morpht.com/blog/drupal-8-configuration-part-1-configuration-api) ฉันขอแนะนำให้เริ่มไซต์ใหม่ใน D9 ทุกโมดูลส่วนใหญ่ได้อัปเกรดจาก D8 -> D9 แล้ว เนื่องจากกระบวนการอัปเกรดนั้นง่ายกว่ามาก
Grayson Cooper avatar
in flag
ขอโทษที่ไม่ชี้แจง! นี่ไม่ใช่ไซต์ใหม่ ฉันเริ่มไซต์ใหม่ใน D9 และยอมรับว่ามันง่ายกว่า/ดีกว่า และในขณะที่ D9 สามารถทำได้ 99% ของสิ่งที่เราต้องการ แต่ 1% นั้นเป็นกุญแจสำคัญ (ส่วนใหญ่เกี่ยวกับกฎ) เรากำลังสร้างสิ่งต่าง ๆ ด้วยวิธีที่เป็นมิตรต่อ D9 เพื่อลดความเจ็บปวดในการย้ายข้อมูล ในขณะเดียวกันก็พยายามสร้างทักษะบางอย่างในทีมของเราเพื่อให้คุ้นเคยกับ D9 (เช่น การย้ายไปที่ git) ฉันคิดว่าคำถามนี้ยังคงใช้กับไซต์ D9 (นอกคุณสมบัติ) และดูเหมือนว่าการเลือกเชอร์รี่เป็นวิธีที่เหมาะ
leymannx avatar
ne flag
พิจารณาการจัดองค์ประกอบเว็บไซต์เพื่อจัดการเนื้อหาและเนื้อหาหลัก ให้วิธีที่นักพัฒนาสามารถซิงค์ Live DB ล่าสุดกับไซต์ในพื้นที่ได้อย่างง่ายดาย ทุกครั้งที่นักพัฒนาเริ่มสาขาฟีเจอร์ใหม่ (หรือสลับสาขา) หรือรวมการพัฒนาเข้ากับสาขาฟีเจอร์ที่มีอยู่ พวกเขาจะซิงค์ Live DB ล่าสุดลงในไซต์ท้องถิ่นและต้องเรียกใช้ `composer install`, `drush updb` และ `drush fra` . ทำให้สาขาคุณลักษณะมีขนาดเล็ก ทุกคนต้องส่งคำขอผสาน/ดึงด้วยสถานะที่เสถียรภายในสิ้นวันทำการ ละเว้นไฟล์บิลด์ส่วนหน้าจาก repo ปล่อยให้เป็นเรื่องของ CI
leymannx avatar
ne flag
สร้างสคริปต์นักแต่งเพลง, คำสั่ง Drush แบบกำหนดเอง, variable_get/_set() และ hook_update_N() เพื่อนที่ดีที่สุดของคุณ
Kevin avatar
in flag
ฉันนึกไม่ออกว่าต้องใช้ Rules เป็นตัวขัดขวางการอัปเกรด คุณสามารถสร้างกฎเหล่านั้นขึ้นใหม่ได้ในโค้ด/เหตุการณ์สองสามบรรทัด หรือใช้กฎทางธุรกิจ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา