Я предполагаю, что эта команда помогла бы:
cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
, где RELEASE_1_0
и RELEASE_1_1
названия Ваших тегов.
можно найти, что немного больше информации о cvs различной команде здесь
плюс он должно быть довольно просто создать сценарий для создания отчета более suitbable для потребностей, исключая: количество файлов, измененных, созданных удаленный и т.д., Насколько я знаю наиболее распространенные cvs инструменты GUI (wincvs и черепаха), не обеспечивает что-то вроде этого из поля.
Hope это помогает ;)
Всякий раз, когда мне нужно было выполнить эту задачу, я переопределял метод сохранения для модели и проверял, установлен ли уже у какой-либо другой модели флаг (и повернул его выкл).
class Character(models.Model):
name = models.CharField(max_length=255)
is_the_chosen_one = models.BooleanField()
def save(self, *args, **kwargs):
if self.is_the_chosen_one:
try:
temp = Character.objects.get(is_the_chosen_one=True)
if self != temp:
temp.is_the_chosen_one = False
temp.save()
except Character.DoesNotExist:
pass
super(Character, self).save(*args, **kwargs)
class Character(models.Model):
name = models.CharField(max_length=255)
is_the_chosen_one = models.BooleanField()
def save(self, *args, **kwargs):
if self.is_the_chosen_one:
qs = Character.objects.filter(is_the_chosen_one=True)
if self.pk:
qs = qs.exclude(pk=self.pk)
if qs.count() != 0:
# choose ONE of the next two lines
self.is_the_chosen_one = False # keep the existing "chosen one"
#qs.update(is_the_chosen_one=False) # make this obj "the chosen one"
super(Character, self).save(*args, **kwargs)
class CharacterForm(forms.ModelForm):
class Meta:
model = Character
# if you want to use the new obj as the chosen one and remove others, then
# be sure to use the second line in the model save() above and DO NOT USE
# the following clean method
def clean_is_the_chosen_one(self):
chosen = self.cleaned_data.get('is_the_chosen_one')
if chosen:
qs = Character.objects.filter(is_the_chosen_one=True)
if self.instance.pk:
qs = qs.exclude(pk=self.instance.pk)
if qs.count() != 0:
raise forms.ValidationError("A Chosen One already exists! You will pay for your insolence!")
return chosen
Вы также можете использовать указанную выше форму для администратора, просто используйте
class CharacterAdmin(admin.ModelAdmin):
form = CharacterForm
admin.site.register(Character, CharacterAdmin)