GitHub એ સ્ટેક્ડ પુલ રિક્વેસ્ટ્સ (stacked pull requests) ને પબ્લિક પ્રિવ્યૂમાં મૂક્યા છે, જેનાથી ડેવલપર્સ મોટા ફેરફારોને એકબીજા પર નિર્ભર PRની સાંકળમાં વિભાજિત કરી શકે છે, જેનું સ્વતંત્ર રીતે રિવ્યૂ અને મર્જ કરી શકાય છે.

આ ફીચર શા માટે મહત્વનું છે

એક મોટું, એકીકૃત PR ઘણીવાર મહિનાઓ સુધી ચાલતી રિવ્યૂ પ્રક્રિયામાં ફેરવાઈ જાય છે, જેમાં રિવ્યુઅર્સને અસંબંધિત કોડમાંથી પસાર થવું પડે છે. જ્યારે બેઝ બ્રાન્ચ બદલાય છે, ત્યારે આ મોટા ફેરફારોમાં મર્જ કોન્ફ્લિક્ટ્સ (merge conflicts) થવાની શક્યતા રહે છે જે રિલીઝમાં અવરોધ ઊભો કરે છે. સ્ટેક્ડ PRs આ બંને સમસ્યાઓનું નિરાકરણ લાવે છે, કારણ કે તે એક મોટા ડિફ (diff) ને નાની અને ચોક્કસ ડિફની શ્રેણીમાં ફેરવે છે, જેમાં દરેક ડિફ અગાઉના ડિફ પર આધારિત હોય છે.

તે કેવી રીતે કામ કરે છે

મુખ્ય બ્રાન્ચ સામે પ્રથમ PR બનાવો, પછી બીજા PR ને પ્રથમ પર, ત્રીજાને બીજા પર, અને આ રીતે આગળ વધો. GitHub આપમેળે આ સંબંધોને ટ્રેક કરે છે: જો તમે બેઝ PR માં સુધારો કરો છો, તો નિર્ભર PRs નવા સ્ટેટને પ્રતિબિંબિત કરવા માટે અપડેટ થઈ જાય છે. રિવ્યુઅર્સ આખા સ્ટેકને એક જ ક્લિક સાથે મંજૂર કરી શકે છે અથવા વ્યક્તિગત લેયર્સ પર મંજૂરી આપી શકે છે.

  • રિવ્યૂઓ મર્યાદિત વ્યાપમાં રહે છે, જેનાથી ફીડબેક ઝડપી મળે છે.
  • કોન્ફ્લિક્ટ્સ ઘટે છે કારણ કે દરેક PR ફક્ત તેના પોતાના લેયરમાં દાખલ કરેલા કોડને જ સ્પર્શે છે.
  • UI સ્ટેક હાયરાર્કી (hierarchy) દર્શાવે છે, અને GitHub CLI સ્ટેક્ડ PRsની શ્રેણી શરૂ કરવા માટે વન-લાઇનર કમાન્ડ આપે છે.
gh pr create --title Feature A --base main
gh pr create --title Feature B --base feature-a
gh pr create --title Feature C --base feature-b

કમાન્ડ લાઇન ઉદાહરણ ત્રણ લિંક્ડ PRs બનાવે છે, જેમાંથી દરેક તેના અગાઉના PR પર નિર્ભર છે. આ જ વર્કફ્લો વેબ ઇન્ટરફેસ દ્વારા પણ ઉપલબ્ધ છે, જ્યાં તમે અન્ય PRs ને તોડ્યા વિના સ્ટેકમાંથી કોઈ PR ને ફરીથી ક્રમમાં ગોઠવી શકો છો અથવા કાઢી શકો છો.

કોને તેનો લાભ થઈ શકે છે

મોટી ફીચર ટીમો અને ઓપન-સોર્સ મેન્ટેનર્સ અસંબંધિત ફેરફારોથી રિવ્યુઅર્સને પરેશાન કર્યા વિના ક્રમિક કામ પૂર્ણ કરી શકે છે. રિલીઝ મેનેજર્સને શું શિપ કરવા માટે તૈયાર છે તેનું સ્પષ્ટ ચિત્ર મળે છે, કારણ કે દરેક સ્ટેક લેયર તેના પોતાના શેડ્યૂલ મુજબ મર્જ કરી શકાય છે.

ધ્યાનમાં રાખવા જેવી બાબતો

આ ફીચર હજુ પ્રિવ્યૂમાં છે, તેથી સંપૂર્ણ રિલીઝ પહેલાં તેમાં ફેરફાર થઈ શકે છે. ટીમોએ બ્રાન્ચિંગ અંગે નવી આદતો અપનાવવી પડશે અને સ્ટેકને રીબેઝ (rebasing) કરતી વખતે એજ કેસ (edge cases) નો સામનો કરવો પડી શકે છે, ખાસ કરીને જ્યારે સ્ટેકનો અમુક ભાગ પહેલેથી જ મર્જ થઈ ગયો હોય. ડોક્યુમેન્ટેશન હજુ પણ વિકસી રહ્યું છે, તેથી શરૂઆતના વપરાશકર્તાઓને UI સમજવામાં થોડો વધુ સમય ફાળવવો પડી શકે છે.

આગળ શું જોવું

GitHub સંભવતઃ code-owners અને ઓટોમેશન ટૂલ્સ સાથે વધુ ગાઢ સંકલન (integration) લાવશે, અને કોન્ફ્લિક્ટ ઘટાડાના મેટ્રિક્સ પણ દર્શાવી શકે છે. GA (general availability) ના સમય વિશેના અપડેટ્સ માટે પ્રિવ્યૂ એનાઉન્સમેન્ટ પેજ પર નજર રાખો.

સારાંશ: સ્ટેક્ડ પુલ રિક્વેસ્ટ્સ ડેવલપર્સને મોટા ફેરફારોને નિયંત્રિત કરવા માટે એક વ્યવહારુ રીત આપે છે, જે એક મોટા અને કોન્ફ્લિક્ટ-ભર્યા PR ને વ્યવસ્થિત અને રિવ્યૂ કરવા માટે અનુકૂળ શ્રેણીમાં ફેરવે છે. જો તમારા વર્કફ્લોમાં લાંબા રિવ્યૂ અને મર્જની સમસ્યાઓ સામે લડવું પડતું હોય, તો આ પ્રિવ્યૂ ટ્રાયલ માટે યોગ્ય છે.