git+LaTeX workflow




git-workflow (4)

التغييرات في سير عمل LaTeX:

الخطوة الأولى في إدارة سير عمل git + latex بكفاءة هي إجراء بعض التغييرات على عادات LaTeX.

  • بالنسبة للمبتدئين ، اكتب كل جملة على سطر منفصل . تمت كتابة Git إلى شفرة مصدر التحكم في الإصدار ، حيث يكون كل سطر متميز وله غرض محدد. عندما تكتب المستندات في LaTeX ، فغالبًا ما تفكر في الفقرات وتكتبها كوثيقة تدفق حرة. ومع ذلك ، في git ، يتم تسجيل التغييرات على كلمة واحدة في فقرة كتغيير للفقرة بأكملها.

    أحد الحلول هو استخدام git diff --color-words ( انظر إجابتي على سؤال مماثل حيث أعرض مثالاً). ومع ذلك ، يجب أن أؤكد أن الانقسام إلى خطوط منفصلة هو خيار أفضل بكثير (لقد ذكرت ذلك فقط في تمرير ذلك الجواب) ، حيث وجدتها تؤدي إلى صراعات بسيطة للغاية.

  • إذا كنت بحاجة إلى النظر في الاختلاف في الكود ، استخدم الاختلاف الأصلي ل git. لمعرفة الفرق بين اثنين من الإلتزامات التعسفية (الإصدارات) ، يمكنك القيام بذلك باستخدام sha s لكل من الإلتزامات. راجع documentation لمزيد من التفاصيل وكذلك هذا السؤال

    من ناحية أخرى ، إذا كنت بحاجة إلى النظر إلى latexdiff المنسق ، فاستخدم latexdiff الذي يعتبر أداة ممتازة (مكتوبة في perl) تأخذ ملفين لاتكس وينتج خرجًا مختلفًا بتنسيق pdf مثل هذا ( مصدر الصورة ):

    يمكنك دمج git و latexdiff (بالإضافة إلى latexpand إذا لزم الأمر) في أمر واحد باستخدام git-latexdiff (على سبيل المثال git latexdiff HEAD^ لعرض الاختلاف بين worktree و last-but-one commit).

  • إذا كنت تكتب مستندًا طويلاً في اللاتكس ، فإنني أقترح تقسيم فصول مختلفة إلى ملفات خاصة بها والاتصال بها في الملف الرئيسي باستخدام الأمر \include{file} . بهذه الطريقة يكون من الأسهل عليك تحرير جزء محدد من عملك ، كما أنه من السهل التحكم في الإصدار ، كما تعلمون التغييرات التي تم إجراؤها على كل فصل ، بدلاً من الاضطرار إلى التعرف عليها من سجلات واحدة كبيرة ملف.

باستخدام بوابة بكفاءة:

  • استخدام الفروع! . ربما ليس هناك نصيحة أفضل يمكنني تقديمها. لقد وجدت فروعًا مفيدة جدًا لتتبع "الأفكار المختلفة" للنص أو "حالات مختلفة" من العمل. يجب أن يكون الفرع master هو عملك الرئيسي ، في حالة "جاهزة للنشر" الحالية ، أي إذا كانت جميع الفروع ، إذا كنت ترغب في وضع اسمك عليها ، فيجب أن يكون الفرع الرئيسي .

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

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

    إليك مثالاً عن فروعي ودمجاتي من ورقة حديثة (أستخدم SourceTree على OS X و git من سطر الأوامر على Linux). ربما تلاحظ أني لست أكثر موظفي العالم تكرارًا ولا أترك تعليقات مفيدة طوال الوقت ، ولكن هذا ليس سببًا لعدم اتباع هذه العادات الجيدة. الرسالة الرئيسية هي أن العمل في فروع مفيدة. أفكاري وأفكاري وعائدات التنمية غير خطية ، ولكن يمكنني تتبعها عبر الفروع ودمجها عندما أشعر بالرضا (كما كان لدي فروع أخرى لم تسفر في أي مكان تم حذفها لاحقًا). يمكنني أيضًا "وضع علامة" على الالتزام إذا كانت تعني شيئًا (على سبيل المثال ، التقديمات الأولية للمجلات / المراجعات المنقحة / الخ). هنا ، لقد قمت بوضع علامة عليها "الإصدار 1" ، حيث يوجد المسودة حتى الآن. تمثل الشجرة قيمة أسبوع العمل.

  • ومن الأشياء المفيدة الأخرى إجراء تغييرات على مستوى المستند (مثل تغيير \alpha إلى \beta كل مكان) من تلقاء نفسها. بهذه الطريقة ، يمكنك العودة إلى التغييرات دون الحاجة إلى التراجع عن شيء آخر معها (هناك طرق يمكنك القيام بها باستخدام git ، لكن مهلا ، إذا كان بإمكانك تجنبها ، فلماذا لا؟). وينطبق نفس الشيء على الإضافات إلى الديباجة.

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

أنا أكتب وثيقة طويلة جدا في LaTeX. لديّ جهاز كمبيوتر عملي وجهاز الكمبيوتر المحمول الخاص بي ، وأنا أعمل عليهما. أحتاج للحفاظ على جميع الملفات المتزامنة بين جهازي الكمبيوتر ، وكذلك ترغب في الاحتفاظ بسجل النسخة السابقة. لقد اخترت git كـ DVCS الخاص بي ، وأقوم باستضافة مستودع البيانات الخاص بي على الخادم الخاص بي. أنا أستخدم أيضًا Kile + Okular لإجراء التعديل. لا يحتوي Kile على مكوّن مدمج من git. أنا أيضًا لا أتعاون مع أي شخص في هذا النص. أفكر أيضا في وضع مستودع خاص آخر على كودت ، إذا كان الخادم الخاص بي لسبب ما لا يمكن الوصول إليه.

ما هي ممارسة سير العمل الموصى بها في هذه الحالة؟ كيف يمكن التفرع في تركيب نظام العمل هذا؟ هل هناك طريقة لمقارنة نسختين من نفس الملف؟ ماذا عن استخدام خبأ؟


استخدم هذا لإصدار فرق في حالة كنت على ويندوز ، أي قسط ، مجرد برنامج نصي بسيط bat يعمل تماما على windows10 ، miktex2.9:

https://github.com/redreamality/git-latexdiff


خيار آخر هو استخدام Authorea وهو نوع من جيثب للأوراق العلمية. كل مقالة في Authorea هي git repo. ويتم تحويل LaTeX الذي تنشئه إلى HTML5 (بالإضافة إلى ملف PDF عند التجميع).


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

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

لقد استخدمت أيضا دروببوإكس و git لإنشاء النظام الذي وصفته أعلاه. يمكنك إنشاء مستودع تخزين فارغ في مجلد صندوق الإسقاط الخاص بك. يمكنك بعد ذلك الدفع / السحب من أي من الكمبيوترين إلى صندوق الإسقاط للبقاء على اطلاع دائم على جميع الأطراف. عادةً ما يعمل هذا النظام فقط عندما يكون عدد المتعاونين صغيرين نظرًا لوجود احتمال حدوث فساد إذا حاول الأشخاص الدفع إلى repo dropbox في نفس الوقت.

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







git-workflow