Не совсем то, что вы хотите, но вы можете взломать это с помощью ключевого слова typof, но только если у вас есть var, который объявлен как ваш тип интерфейса, как показано ниже. Обратите внимание, что я думаю, что то, что вы сделали в последнем кодебло, намного лучше:)
interface ExerciseData {
id : number;
name : string;
vocabulary : {
from : string;
to : string;
}[];
}
var x: ExerciseData;
var vocabs : typeof x.vocabulary[];
I recently pulled the wrong remote repository into the local one (git remote add ...
and git remote update
). After deleting the unwanted remote ref, branches and tags I still had 1.4GB (!) of wasted space in my repository. I was only able to get rid of this by cloning it with git clone file:///path/to/repository
. Note that the file://
makes a world of difference when cloning a local repository - only the referenced objects are copied across, not the whole directory structure.
Edit: Here's Ian's one liner for recreating all branches in the new repo:
d1=#original repo
d2=#new repo (must already exist)
cd $d1
for b in $(git branch | cut -c 3-)
do
git checkout $b
x=$(git rev-parse HEAD)
cd $d2
git checkout -b $b $x
cd $d1
done
Вы уверены, что учитываете только файлы .pack, а не файлы .idx? Они находятся в том же каталоге, что и файлы .pack, но не имеют данных репозитория (как указывает расширение, они не более чем индексы для соответствующего пакета - на самом деле, если вы знаете правильную команду, вы можете легко воссоздать их из файла пакета, и git сам делает это при клонировании, поскольку только файл пакета передается с использованием собственного протокола git).
В качестве репрезентативного образца я взглянул на мой локальный клон linux- Репозиторий 2.6:
$ du -c *.pack
505888 total
$ du -c *.idx
34300 total
Это означает, что расширение должно быть примерно на 7%.
Существуют также файлы вне объектов /
; по моему личному опыту, из них index
и gitk.
Другие объекты git, хранящиеся в .git
включает деревья, коммиты и теги. Коммиты и теги небольшие, но деревья могут стать большими, особенно если у вас очень большое количество небольших файлов в вашем репозитории. Сколько файлов и сколько у вас коммитов?
.NET хранит строк внутри как последовательность объектов System.Char
. Один System.Char
представляет кодовую единицу UTF-16 .
Из документации MSDN на System.Char
:
.NET Framework использует Char структура для представления Unicode персонаж. Стандарт Юникода идентифицирует каждый символ Unicode с помощью уникальное 21-битное скалярное число, называемое кодовая точка и определяет UTF-16 форма кодирования, определяющая, как кодовая точка закодирована в последовательность одного или нескольких 16-битных значений. Каждый 16-битное значение варьируется от шестнадцатеричного От 0x0000 до 0xFFFF и хранится в
Если у вас есть одна большая упаковка, и вы хотите знать, что занимает пространство, вы можете перечислить объекты, составляющие пакет, вместе с тем, как они хранятся.
git verify-pack -v .git/objects/pack/pack-*.idx
Обратите внимание, что
verify-pack
принимает индексный файл, а не сам пакетный файл. Это дает отчет о каждом объекте в пакете, его истинном размере и его упакованном размере, а также информацию о том, был ли он «разбит», и если да, то о происхождении дельта-цепочки.Чтобы увидеть, есть ли какие-либо необычно большие объекты в вашем репозитории вы можете численно отсортировать вывод по третьему или четвертому столбцу (например,
| sort -k3n
).Из этого вывода вы сможете увидеть содержимое любого объекта, используя
команда git show
, хотя невозможно точно увидеть, где в истории фиксации репозитория имеется ссылка на объект. Если вам нужно это сделать, попробуйте что-нибудь из этого вопроса .