Гость
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / GIT. Игнорировать содержимое файла / 13 сообщений из 13, страница 1 из 1
07.04.2015, 18:12
    #38929693
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
Всем привет, не считаю себя новичком гита, но столкнулся с проблемой, которую не знаю как решить.

У меня есть в репозитории файл типа sln - Chunk.sln. Он участвует в одном процессе как контейнер всевозможных настроек. Я не могу его запихнуть в .gitignore так как он нужен, но при этом содержимое его не должно индексироваться. На эсо и в сети в основном два решения для этого, но оба не подходят

Код: powershell
1.
git rm --cached <file>

- не подходит, ибо файл должен быть в репозитории
Код: powershell
1.
git update-index --assume-unchanged <file>

- не подходит, т.к изменения не индексируются, но изменяя этот файл он не дает получить новые изменения, т.к фиксирует что этот файл менялся, только не показывает его unstaged files.
...
Рейтинг: 0 / 0
08.04.2015, 09:13
    #38930014
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
OracleLoverВсем привет, не считаю себя новичком гита, но столкнулся с проблемой, которую не знаю как решить.

У меня есть в репозитории файл типа sln - Chunk.sln. Он участвует в одном процессе как контейнер всевозможных настроек. Я не могу его запихнуть в .gitignore так как он нужен, но при этом содержимое его не должно индексироваться.

В игнор, без вариантов.

Если он совсем разный, то пусть каждый сам создаёт

Если есть несколько вариантов- то их и внести (Chunk.sln.win, Chunk.sln.linux например), а на каждой машине- сделать link, или ещё как.
...
Рейтинг: 0 / 0
08.04.2015, 09:29
    #38930028
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
Такую штуку обычно делаем с конфигами - app.temp.config в игнор, app.config как эталон. В приложении используешь соответственно темповый и крутишь его. Но это файл солюшена студии VS его невозможно динамически подключить и т.д, чтобы комфортно работать с ним в студии ссылка должна быть прямой.

Ладно, как я думал такой фичи в гите нет, и придется просто зарегламентировать данный момент, хотя судя по количеству лайкеров подобных вопросов на эсо - имхо эта фича нужна.
...
Рейтинг: 0 / 0
08.04.2015, 14:12
    #38930510
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
OracleLoverНо это файл солюшена студии VS его невозможно динамически подключить и т.д, чтобы комфортно работать с ним в студии ссылка должна быть прямой.

Во-первых против хард-линка никто не устоит (но как создавать его в винде без far'а я до сих пор не знаю).

Во-вторых зачем вообще хранить файл в VS не храня его содержание? Почему нельзя его копировать другими способами? Мне вообще непонятна цель...
...
Рейтинг: 0 / 0
08.04.2015, 17:02
    #38930861
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
Alexey Tomin,

Представь что у тебя дома кухня стала общей на весь подъезд. Где-то в шкафу стоит красное ведерко с надписью "МУСОР", и есть робот, которого ты назвал TeamCity, который каждый день ровно в 2.00 заезжает на кухню, открывает дверку, достает это ведерко, анализирует весь мусор за день который в нем побывал, записывает себе в отчетик и сжигает мусор из него.

А теперь ты убираешь это ведерко, люди начинают кидать мусор по углам, кто-то выкидывает бутылки в окно, они интересуются друг у друга "а где ведерко? а хой его знает... сам ищу" хаос и анархия у тебя творится на кухне, ночью робот тоже не знает откуда взять ведерко и сыпит ошибками в отчет.

П.С. Я не знаю как доступнее обьяснить работу с солюшенами и их связи в MS Visual Studio
...
Рейтинг: 0 / 0
09.04.2015, 08:53
    #38931377
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
OracleLoverЯ не знаю как доступнее обьяснить работу с солюшенами и их связи в MS Visual Studio

VS не при чём.
Т.е. есть файл (пофиг какой), содержание которого разное на разных машинах, а в GIT должен лежать строго тот, который нужен TeamCity. Так?

Тогда добавить файл в репозиторий, после этого добавить его в .gitignory и каждый меняет.

В результате- в репозитории и на машине TeamCity один файл, а у каждого разработчика- свой.

[offtop]
Вообще, конечно, да- это персональный изврат VS - у остальных либо файл один, либо он не нужен автосборщику. Как всегда у MS
[/offtop]
...
Рейтинг: 0 / 0
09.04.2015, 09:31
    #38931430
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
Alexey Tomin,

Ээ? игнорировать можно файлы которые еще не были добавлены в индекс. Я уже написал как игнорировать файлы которые добалены в индекс(--assume-unchanged), но этот способ не подходит, так как при пулле\пуше надо либо коммитить изменения это файла(нельзя потмоу что он индексирует), либо постоянно делать дискард этого файла.
...
Рейтинг: 0 / 0
09.04.2015, 13:03
    #38931825
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
OracleLoverЭэ? игнорировать можно файлы которые еще не были добавлены в индекс.

Что Ээ? Вот, пожалуйста. Винды, простите, нет.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
atomin@tomin:~/tmp$ git init aaa
Инициализированный пустой репозиторий Git в /home/atomin/tmp/aaa/.git/
atomin@tomin:~/tmp$ cd aaa
atomin@tomin:~/tmp/aaa$ echo aaaa > 1.txt
atomin@tomin:~/tmp/aaa$ git add 1.txt
atomin@tomin:~/tmp/aaa$ git commit -m "a"
[master (root-commit) 3838ce5] a
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
atomin@tomin:~/tmp/aaa$ echo 1.txt > .gitignore
atomin@tomin:~/tmp/aaa$ git add .gitignore 
atomin@tomin:~/tmp/aaa$ git commit -m "b"
[master d3d4176] b
 1 file changed, 1 insertion(+)
 create mode 100644 .gitignore
atomin@tomin:~/tmp/aaa$ echo bbbb > 1.txt
atomin@tomin:~/tmp/aaa$ git commit -m "c"
В ветке master
Changes not staged for commit:
	modified:   1.txt

нет изменений, добавленных в коммит
atomin@tomin:~/tmp/aaa$ git --version
git version 1.9.1



Итого- в репозитории есть файл, которой в игнор-листе. В дальнейшем он будет получаться (в старой версии), но изменения не будут писаться
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
atomin@tomin:~/tmp/aaa1$ git clone --local /home/atomin/tmp/aaa
Cloning into 'aaa'...
готово.
atomin@tomin:~/tmp/aaa1$ cd aaa
atomin@tomin:~/tmp/aaa1/aaa$ ls
1.txt
atomin@tomin:~/tmp/aaa1/aaa$ cat 1.txt 
aaaa



Если надо поменять- в .gitignory портишь эту строчку и коммитишь файл
...
Рейтинг: 0 / 0
09.04.2015, 13:42
    #38931871
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
Alexey Tomin,

У меня 1.8.3, и такую штуку не позволяет исполнить, т.е если добавить в .gitignore файл который уже проиндексирован, то он и дальше будет трекать его изменения, игнор заработает только после git rm 1.txt.
А вот именно такой функционал как у тебя мне и требуется.

Или ты меня обманываешьу тебя какой-то другой гит - везде пишут что надо удалить и только потом можно игнорировать файл
официал
...
Рейтинг: 0 / 0
09.04.2015, 15:14
    #38932005
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
OracleLoverAlexey Tomin,

У меня 1.8.3, и такую штуку не позволяет исполнить,

Ты пробовал? Какая конкретно команда исполняется не так?
Я это и с SVN проделывал, лет 5 назад- работает.

OracleLoverИли ты меня обманываешьу тебя какой-то другой гит - везде пишут что надо удалить и только потом можно игнорировать файл
официал

Надо понимать цель. В данном документе- "как удалить из репозитория файл, который случайно туда попал и должен быть в игноре".

Твой кейс очень редкий, тем более он неведом разработчикам GIT'а (они забыли как винда выглядит, наверное). Я сам попадал на него случайно- впилил файл, добавил это расширение в игнор, а потом выковыривал результаты (и как раз та ссылка для меня). А нужное тебе поведение- это случайно так выросло, и в документации не описано.
...
Рейтинг: 0 / 0
09.04.2015, 17:17
    #38932230
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
[quot Alexey Tomin]OracleLoverAlexey Tomin,

Ты пробовал? Какая конкретно команда исполняется не так?


Конечно, причем я пробовал это и на гитхабе делать и через битбакет. У тебя похоже какой-то багнутый гит :)
Нафиг спорим, я тут создал тестовый проектик, держи репу
https://bitbucket.org/hixel/test-file-ignore

Я пробовал через обычный гит и выполнил 3 твоих коммита
1. Добавил 1.txt
2. Добавил 1.txt в игнор
3. Изменил 1.txt и коммит

По истории видишь что все это он сделал.

Давай теперь ты с помощью своего клиента создай файл 2.txt, добавь в игнор, потом измени его и добавь файл 3.txt(чтобы в этом коммите я видел твои изменения на случай если реально не фиксируются изменения)

Я просто пока не увижу не поверю, нигде я не нашел упоминания о поведение которое проявляется у тебя
...
Рейтинг: 0 / 0
09.04.2015, 17:24
    #38932238
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
*багнутый гит = багнутый гит-клиент
...
Рейтинг: 0 / 0
10.04.2015, 07:25
    #38932625
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GIT. Игнорировать содержимое файла
[quot OracleLover]Alexey Tominпропущено...


Конечно, причем я пробовал это и на гитхабе делать и через битбакет. У тебя похоже какой-то багнутый гит :)
Нафиг спорим, я тут создал тестовый проектик, держи репу
https://bitbucket.org/hixel/test-file-ignore

Я пробовал через обычный гит и выполнил 3 твоих коммита
1. Добавил 1.txt
2. Добавил 1.txt в игнор
3. Изменил 1.txt и коммит

По истории видишь что все это он сделал.

Давай теперь ты с помощью своего клиента создай файл 2.txt, добавь в игнор, потом измени его и добавь файл 3.txt(чтобы в этом коммите я видел твои изменения на случай если реально не фиксируются изменения)

Я просто пока не увижу не поверю, нигде я не нашел упоминания о поведение которое проявляется у тебя

В общем так :)
По сути git - это некий набор правил.
Клиент гита может действовать по этим правилам сильно по-разному.
Когда я меню файл, добавленный в игнор- по-умолчанию он не попадает в коммит, но можно и включить.
Каждый клиент может решить это по-своему.
"Эталонный" клиент (мой) решает так.
Клиент у тебя- может сделать по-другому.

Ладно, видимо этот путь неудобен. тогда предлагаю просто перед сборкой в тимсити добавить переименование файлика из заготовки- 100% это можно сделать.
...
Рейтинг: 0 / 0
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / GIT. Игнорировать содержимое файла / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]