LINUX.ORG.RU

.git внутри .git

 


0

3
mkdir some
cd some
git init
cp -prf ~/some2 .
ls -a some2
. .. .git zzz zzz1
git add .;git commit -m "Init"

и в итоге получаем, что в локальной репе нет some2 и всего его содержимого. Т.е если git видит в subdir .git, то он игнорит этот subdir. Как этого избежать?


git add 'some2/**'

Так, вроде, добавляет файлы. Главное не добавлять в индекс dir-with-.git (явно или неявно), чтобы он его как submodule не пытался добавить.

xaizek ★★★★★
()
Ответ на: комментарий от beastie

Я, наверное, чего не понял из ОП.

Если разные подкаталоги репозитория надо версионировать раздельно, разве это не решается submodules? По моей логике, эти каталоги и файлы слабо связаны с основным репозиторием и скорее всего они - отдельные проекты.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)

Никого не слушай, сабмодули неюзабельное говно, используй монореп.

PPP328 ★★★★★
()
Ответ на: комментарий от Xwo

Нечего всякое говно в репозиторий тащить. Вы бы туда еще Intellij IDEA запи^W закомитили.

trex6 ★★★★★
()
Ответ на: комментарий от beastie

Только что уточнил у ребят из убера - у них все работает. Так может быть пролема не в сабмодулях?

trex6 ★★★★★
()
Ответ на: комментарий от beastie

И чем же субмодули плохие?
Как тогда без них подтянуть зависимость из другого репозитория?

karaien ★★
()

Я хочу в корневой дире сделать .git, который затянет в себя всё содержимое subdir, даже, если в нем есть свой .git

Xwo
() автор топика
Ответ на: комментарий от xaizek

не добавляет. Попробовал в pre-commit hook добавить

#!/bin/bash
find plugged/ -name .git -exec rm -rf {} \;
не помогло

Xwo
() автор топика
Ответ на: комментарий от Xwo

Там надо указывать конкретный каталог. Так, кажется, добавляет всё:

$ find -mindepth 2 -name .git -print0 | while read -d '' a; do git add "$(realpath $a/..)/**"; done
$ git add .
xaizek ★★★★★
()

возможные варианты:

  • gitignore
  • subrepo
anonymous
()

У меня хранится горизонтально, а рядом с проектами скрипт сьроящий иерархию, такие дела

anonymous
()
Ответ на: комментарий от xaizek

┌─[user@debian]─[~/.vim]
└──╼ find -mindepth 2 -name .git -print0 | while read -d '' a; do git add "$(realpath $a/..)/**"; done
realpath: ./plugged/YouCompleteMe/third_party/python-future/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/python-future/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/bottle/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/jedi/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/numpydoc/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/numpydoc/doc/scipy-sphinx-theme/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/parso/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/requests/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/certifi/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/idna/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/urllib3/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/chardet/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/frozendict/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/cregex/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/ycmd/third_party/waitress/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests_deps/requests/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests_deps/certifi/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests_deps/idna/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests_deps/urllib3/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests_deps/chardet/.git/..: Not a directory
fatal: /**: '/**' is outside repository
realpath: ./plugged/YouCompleteMe/third_party/requests-futures/.git/..: Not a directory
fatal: /**: '/**' is outside repository
Xwo
() автор топика
Ответ на: комментарий от Xwo
find -mindepth 2 -name .git -print0 | while read -d '' a; do git add "$(dirname $a)/**"; done

Может придётся ещё вставить tac | посередине, чтобы вложенние каталоги обрабатывались первыми.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

find -mindepth 2 -name .git -print0 |tac | while read -d " a; do git add «$(dirname $a)/**»; done

fatal: Pathspec './plugged/YouCompleteMe/third_party/python-future/**' is in submodule 'plugged/YouCompleteMe/third_party/python-future'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/python-future/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/bottle/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/jedi/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/numpydoc/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/numpydoc/doc/scipy-sphinx-theme/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/jedi_deps/parso/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/requests/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/certifi/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/idna/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/urllib3/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/requests_deps/chardet/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/frozendict/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/cregex/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/ycmd/third_party/waitress/**' is in submodule 'plugged/YouCompleteMe/third_party/ycmd'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests_deps/requests/**' is in submodule 'plugged/YouCompleteMe/third_party/requests_deps/requests'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests_deps/certifi/**' is in submodule 'plugged/YouCompleteMe/third_party/requests_deps/certifi'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests_deps/idna/**' is in submodule 'plugged/YouCompleteMe/third_party/requests_deps/idna'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests_deps/urllib3/**' is in submodule 'plugged/YouCompleteMe/third_party/requests_deps/urllib3'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests_deps/chardet/**' is in submodule 'plugged/YouCompleteMe/third_party/requests_deps/chardet'
fatal: Pathspec './plugged/YouCompleteMe/third_party/requests-futures/**' is in submodule 'plugged/YouCompleteMe/third_party/requests-futures'

Xwo
() автор топика
Ответ на: комментарий от xaizek

По-моему, самым лучшим решением будет разыменовывать .git в .git_some перед коммитом и после коммита опять возвращать им имя .git

Только как правильно это сделать? Еще же после clone/update это надо делать.

Xwo
() автор топика
Ответ на: комментарий от Xwo

Не знаю, может в случае вложенных сабмодулей git add не может работать. Коммитить .git я бы не стал, разве что переименовывать в pre-commit и возвращать старые имена в post-commit.

Еще же после clone/update это надо делать.

Хука для clone точно нет.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

можно баш алиасом сделать. Типа nickname-gitclone() проверять в репе .githook/clone и выполнять его в случае наличия. Или еще какой-то вариант более удобоваримый есть?

Xwo
() автор топика
Последнее исправление: Xwo (всего исправлений: 1)
Ответ на: комментарий от Xwo

.git/hooks/clone

Оно там само не появится.

pre/post-commit, наверное, самое перспективное направление для сложных репозиториев.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Да, уже сделал. Всем спасибо

Xwo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.