Я должен сохранить двоичные активы под TFS? Как?

При попытке сохранить образ к попытке файла:

ImageIO.write(thumb, "jpeg", new File(....));

, Если Вы просто хотите на уровне байтов, пытаются делать вызов записи, но передают его ByteArrayOutputStream, из которого можно тогда получить массив байтов и сделать с ним, что Вы хотите.

7
задан Community 23 May 2017 в 10:09
поделиться

2 ответа

We've always kept binary assets in TFS when we need to, and just dealt with the side-effects of that choice (extra storage, longer check-ins because you can't diff on binaries, etc). I don't believe there's a way to selectively destroy the history of certain files, except manually. If you want to do this periodically, by hand, you could do the following:

  1. Get a curent copy of the binary files
  2. Destroy (delete with history) the binary copies in TFS
  3. Manually add the files back to TFS

You'd have only the most recent copy, but this has a side-effect - you'd break any previous builds, since an attempt to retrieve source history wouldn't return these new copies of the files. TFS would check for a copy that matches the checkout you're attempting, and finding none, it wouldn't retrieve a copy of those files. You'd need to update your build scripts to pull the most recent binaries, as well as the historical code, if you wanted to build an old version, but even then, it won't be a true history.

The second option is to only check them in periodically - not with every single minor change. For example, keep these files somewhere safe (a file share with daily backups), and then only check in the changed binaries every week or so, or before every label, or whatever - this way, you don't have incremental history, but you'd still have your label history. You might even consider writing some kind of automated routine to apply labels, where it would check in any changes in that folder first, then apply the label.

Please post back what you end up doing - I'm curious to know!

5
ответ дан 7 December 2019 в 03:18
поделиться

Вот несколько мыслей:

  • Рассмотрите возможность использования отдельного проекта VSTS, чтобы не смешивать двоичные файлы и код в одном проекте. Это немного упрощает управление (например, вы можете хранить активы отдельно, а также любые связанные с ними рабочие элементы легче запрашивать с помощью фильтрации по проекту). С другой стороны, это будет означать, что для получения последней информации нужно будет 2 клика.

  • Почему вы не хотите хранить историю? Смысл управления версиями - хранить историю, чтобы вы могли вернуться к конкретной сборке за определенный день. В противном случае вы можете просто использовать программу резервного копирования на сетевом диске (а вы действительно не хотите этого делать!)

  • Если вас беспокоит только использование дискового пространства, то не стоит. 100 МБ - это мало, а жесткие диски - дешевы. В моем последнем игровом проекте были сотни гигабайт ресурсов, и мы хранили историю каждого изменения более 3 лет.

  • Ресурсы ничего не замедляют. Они требуют времени для обработки, только если вы их зарегистрируете или получите, и это оба действия, которые вам нужно будет выполнить, даже если вы не используете систему управления версиями. В самом деле, управление исходным кодом ускоряет работу, потому что у вас есть решение "все в один клик".

  • Многие другие преимущества управления исходным кодом действительно полезны для ресурсов и значительно перевешивают недостатки.

4
ответ дан 7 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: