سؤال
بالنظر إلى أن GIT لا يتعرف على الروابط الرمزية التي تشير خارج المستودع ، هل هناك أي مشكلة في استخدام الروابط الصلبة؟
هل يمكن أن يكسرهم جيت؟ هل يمكنك توجيه لي إلى معلومات مفصلة؟
المحلول
كائن "الشجرة" ، الذي يمثل الدلائل في GIT ، اسم الملف و (مجموعة فرعية من) أذونات. لا يخزن رقم inode (أو نوع آخر من معرف الملف). وبالتالي روابط صعبة لا يمكن تمثيلها في git, ، على الأقل لا يخلو أدوات الطرف الثالث مثل ورتور أو Git-Cache-Meta (ولست متأكدًا مما إذا كان ذلك ممكنًا حتى مع هذه الأدوات).
يحاول GIT عدم لمس الملفات التي لا تحتاج إلى تحديثها ، ولكن عليك أن تأخذ في الاعتبار أن GIT لا تحاول الحفاظ على الروابط الصلبة ، بحيث يمكن كسرها بواسطة GIT.
حول الروابط الرمزية التي تشير خارج المستودع: GIT ليس لديه أي مشاكل معهم ويجب أن يحافظ على محتويات الروابط الرمزية ... لكن فائدة هذه الروابط مشكوك فيها ، كما إذا كانت هذه الروابط المعيبة ستُكسِّن أو لا تعتمد على نظام الملفات الخارج مستودع GIT ، وليس تحت السيطرة على GIT.
نصائح أخرى
حسنًا ، هذا الآن رد متأخر = د
اكتشفت ذلك ، باستخدام السنانير ، يمكنك التقاط git pull
الحدث (عندما يكون هناك شيء يسحبه ...) كتابة معالج أحداث البرنامج النصي إلى .git/hooks/post-merge
ملف.
أولا ، عليك أن chmod +x
هو - هي.
ثم ، ضع ln
الأوامر بداخلها لإعادة إنشاء روابط صلبة في كل سحب. أنيقة هاه!
إنه يعمل ، أنا فقط بحاجة إلى ذلك لمشروعي و ls -i
يوضح أن الملفات تم ربطها تلقائيًا بعد pull
.
مثال على .git/hooks/post-merge
:
#!/bin/sh
ln -f $GIT_DIR/../apresentacao/apresentacao.pdf $GIT_DIR/../capa/apresentacao.pdf
ln -f $GIT_DIR/../avaliacoesMono/avaliacao_monografias_2011_Nilo.pdf $GIT_DIR/../capa/avaliacoes.pdf
ln -f $GIT_DIR/../posters/poster_Nilo_sci.pdf $GIT_DIR/../capa/poster.pdf
ln -f $GIT_DIR/../monografia/monografia_Nilo.pdf $GIT_DIR/../capa/monografia_Nilo.pdf
هام: كما ترون ، يجب أن يبدأ المسار إلى أي ملف في مستودعك $GIT_DIR
, ، ثم أضف المسار النسبي الجزئي إلى الملف.
مهم أيضا: -f
ضروري ، لأنك تقوم بإعادة إنشاء ملف الوجهة.
من هذا مسألة Msysgit
نقاط الوصلات ليست روابط رمزية. لذلك ، فإن الروابط الرمزية ببساطة غير مدعومة في msysgit.
ايضا، لم يتم تتبع الروابط الصعبة من قبل git.
كانت المشكلة موجهة نحو Windows (نظرًا لأنها تتعلق بـ MSYSGIT) والنقاش حول الدعم المحتمل لـ Symlink.
لكن التعليق حول الرابط الصعب يتعلق GIT بشكل عام.
Google 'GIT Preserve Hand Links' ويظهر أن GIT لا يعرف كيفية الحفاظ على بنية الارتباط الصعبة AFAIK ، ربما حسب التصميم.
تستخدم مشاريع الويب الخاصة بي الروابط الصعبة على النحو التالي:
www/products/index.php
www/products/dell_latitude_id577/index.php #(hard linked to above)
www/products/dell_inspiron_id323/index.php #(hard linked again to above)
me@server:www/products$ ls -l index.php
-rwxr-xr-x 3 me me 1958 Aug 22 22:10 index.php*
إذا أردت إجراء تغييرات على الفهرس.
me@server:www$ git pull
على جهاز آخر ، ستقوم بإنشاء index.php جديد لكل رابط صلب.