INÍCIO ----------- Este é um vídeo rápido e sujo na criação de patches no Drupal. É rápido no sentido de que eu não quero entrar em muitos detalhes e sujo no sentido de que tem monte de lixo na minha tela, já que fiz esse vídeo meio que ao vivo, então você terá ignorar que isso e continuar comigo. Nós vamos utilizar duas feramentas para criar patches, diff e CVS diff. Você pode usar o diff se não tiver acesso ao CVS ou se estiver com um pouco de medo dele. É um jeito independente de outros recursos para criar patches. E com o CVS diff, obviamente você vai estar rodando isso contra o CVS e é um jeito muito legal e rápido de ter um patch feito. Então, nós vamos começar indo aos handbooks e vamos à sessão Contributing to Development (Contribuindo com o Desenvolvimento). E depois nós vamos à sessão Patches. Quando você chegar aos Patches, você vai ver que existe um "HOWTO: Create patches" (Criando patches) assim como um "HOWTO: Submiting patches for Drupal" (Enviando patches para o Drupal) e você deve ler ambos e se familiarizar com eles. 0:57 Nós vamos começar com o "HOWTO: Create Patches" que cobre o básico sobre o diff. E aqui no meio aqui é o comando que nós vamos utilizar quando utilizarmos o diff, que é o jeito independente. Então, eu preciso ir pegar meus arquivos para certificar-me que tenho os arquivos mais recentes para trabalhar. Então, eu vou em frente e somente ir à página do projeto aqui porque eu sei qual é ela. E quando eu chegar aqui, eu vou ir até tarballs. Esses são os releases oficiais mas eu vou usar a versão de desenvolvimento para que eu possa certificar-me que eu tenha tudo mais recente e então eles poderão adaptar para a versão anterior se quiserem. E deixe me abrir o arquivo. E então nós vamos dar uma olhada aqui, veja aqui pois está na minha área de trabalho. E, aqui está o arquivo README que é o arquivo que eu quero de fato editar. Eu vou abrí-lo com meu editor de texto. 2:00 E eu vou, a primeira coisa que vou fazer é salvá-lo como um novo arquivo, para que o diff possa comprar os dois arquivos e obter a diferença. Então, só vou salvá-lo com a palavra "new" (novo) e também preciso me certificar que estou salvando no lugar certo. Eu sempre salvo quando estou fazendo diffs, salve o novo arquivo em que está trabalhando no mesmo lugar do original. Se você fizer diffs de localizações estranhas é possível que você termine fazendo um patch que as pessoas não consigam aplicar no final. E agora eu tenho meu novo arquivo, então vou digitar as mudanças que eu quero fazer no arquivo. Seria a mesma coisa se fosse, você sabe, código ao invés de um README, você só, quaisquer mudanças que você esteja fazendo, vá em frente e nós descobriremos a diferença quando rodarmos nosso comando. 3:00 E eu só preciso digitar todas essas coisas boas que estou mudando. OK. E lá vamos nós. Então eu vou salvar esse arquivo. E agora eu vou voltar àquela página do diff do diff que estávamos vendo para que possamos rever nosso comando. E enquanto ela está carregando, eu posso ir e abrir meu terminal, já que estamos usando a linha de comando aqui. E eu vou mudar, eu vou usar "cd" até o diretório onde os arquivos estão, que é minha área de trabalho nesse caso, então usarei um "ls", uma listagem de arquivos. Você pode ver que o novo arquivo está incluído no diretório agora. 4:04 E aqui na página, esse é o nosso comando, então isso é praticamente o que vou digitar. Então ele é diff traço "up", o nome do arquivo antigo, que é somente README, e então o nome do arquivo novo. E então quero colocar o resultado num arquivo de patch então vou lhe dar um, o arquivo de patch um nome que meio que faça faça sentido e as pessoas possam entender o que está acontecendo. Você pode salvar o patch onde quiser, você só precisa digitar o caminho nesse nome e ele vai salvar o arquivo no diretório pra você. Então quando eu listo esses, o conteúdo do diretório, eu vou ver que o meu, meu novo patch, está lá. E lá está ele. 5:00 E isso é para utilizar o diff regular, só um jeito independente, local de fazer as coisas. E então vamos abrí-lo para ver como que isso fica. O que está vermelho foi removido, verde adicionado, o topo lista o nome dos arquivos - que não são tão importantes. Agora vamos em frente e fazer um CVS diff. Então, a primeira coisa que eu preciso fazer é, eu já tenho um checkout desse módulo, um checkout CVS, então eu preciso ir aonde tenho esse checkout e eu preciso atualizá-lo e ter certeza que eu tenho os arquivos mais novos. Então, update dp. Obter últimos arquivos, sim. Ok, eu tenho tudo atualizado então agora posso começar a trabalhar com o módulo. Então vamos em frente e abramos o arquivo README daqui. 6:00 Como você pode ver, eu tenho um checkout de todos os módulos aqui mas eu estou só procurando pelo imagecache. Vá lá. Aí está meu readme, então abra-o. E agora eu, você sabe, preciso colocar minhas mudanças. Eu não tenho que criar um novo arquivo nem fazer nada como fiz com o diff regular porque o que vai acontecer é, o CVS diff vai comparar meu arquivo local com o que está na verdade no drupal.org. Então é assim que ele vai encontrar a diferença, ele vai na verdade ir até lá e achar a versão mais nova. Então, eu vou só digitar meu lixo aqui e você pode brincar junto em casa. Geralmente os, os CVS diffs são preferidos pelos mantenedores porque quando você faz dessa forma, você vai obter indicação da revisão atual do arquivo, que é informação útil. 7:09 Ah, você também percebe que existem várias linhas aqui. Existem vários espaços em branco nesse arquivo e tipicamente eu removeria isso mas num patch você não deve editar nada além do texto em si, o código que está mudando. Então, foi o diff o que acabamos de fazer. Agora o que queremos fazer é o CVS diff, então eu vou descer até "Submit patches to Drupal" (Enviando patches para o Drupal) porque ele, na verdade, tem informações sobre o CVS diff. E eu vou como a internet... aqui vamos nós. Então, novamente, você deve ler essa página inteira, ela tem coisa boa. Esse é nosso comando que vamos utilizar. Então, de volta ao meu terminal e nós vamos, nós já estamos no diretório, então vamos só ir em frente e digitar esse comando. 7:57 Então eu quero rodar cvs diff "up" e só preciso colocar o nome do arquivo. Não existe arquivo novo. E novamente, colocar o resultado num patch que eu quero ter salvo locamente nesse diretório para que eu possa monitorar ele, eu mesma. E assim que eu rodar isso, listar meus arquivos e boom, lá está meu patch. Fácil. Vamos dar uma olhada neste e podemos ver como ele é diferente. Quando você ver isso, você vai perceber que o topo parece um pouco diferente e tem essa linha que na verdade indica a versão exata do arquivo com que realizei o diff para que um desenvolvedor tenha certeza contra que versão esse patch foi criado. Então, nós fechamos estes e agora eu preciso enviar meu patch. É isso, o patch está completo agora e eu só preciso enviá-lo. Se eu for em issues (problemas), posso enviar um novo problema. 8:57 Eu escolheria meu projeto. Se fosse o Drupal, você escolheria Drupal, mas como isso é para um módulo contribuido em particular, eu vou em imagecache. Eu preciso preencher algumas informações aqui. A versão é 5 1 dev porque foi contra esta versão que fiz o patch. E essa é uma mudança na documentação e é uma solicitação de uma nova função e você pode preencher também o resto das informações. Não vou fazer isso porque eu já tenho um problema para isso. Então eu fiz um problema anteriormente para que eu não esquecesse de realmente fazer o patch. Então, eu vou até aquele problema que já existe e vou me livrar destes malditos emails. E aqui está e para anexá-lo, vou enviar um "follow up" (resposta) ao problema inicial. E eu preciso mudar isso para dev porque eu original fiz o problema contra 1.2, 1.2 é a versão original que estava usando, mas o patch em si próprio é na verdade contra a versão de desenvolvimento. 10:05 E eu só vou adicionar uma pequena descrição aqui para que as pessoas saibam o que estou anexando e tal. Também vou só explicar que mudei da versão 1.2 para dev porque estou fazendo isso contra o galho CVS 5 e não contra o release atual. E agora, assim que isso esteja feito, eu preciso anexar o patch em si. Não vai ajudar muito se você não enviá-lo de fato. Então, voltemos pra cá e achemos meu patch que está que está no meu diretório CVS onde criei ele. 11:02 Aqui está meu patch. Nós vamos adicionar isso. Você pode previsualizar sempre que você enviar, mas se você tem um anexo não funciona direito então vou somente enviar. Eu não tenho nenhum texto maluco nem nada que eu precise checar a formatação antes de enviar. E está enviando ele e boom, lá está ele. E se você clicar naquilo você verá que é a mesma coisa que eu tinha em meu servidor local. Agora uma coisa que eu percebi depois que eu fiz isso é que eu esqueci de mudar o status de active (ativo) para patch (code needs review - código precisa de revisão). Então, eu não vou lhe entediar mais com os detalhes disso e vou voltar e mudar aquilo e isso é conceber um patch no Drupal.