The trick is not so much on how you apply the texture to the faces, but on the texture it self.
What you need is a "seamless" or "tileable texture", and how to make one is not really a question about blender itself, but more a question of image editing or photo editing.
First you must correctly unwrap your mesh, see here how to. You may want to get rid of that NGon on the top too.
Then either search the internet for "Seamless Rock Texture" or "Tileable rock texture" or create one yourself using some tutorial like these https://www.google.com/search?tbm=vid&q=gimp%20seamless%20texture
You can't really do heavy texture editing inside Blender, there are some basic tools like painting or material based effects, but for for heavy work you are always advised to use a image editor.
Anyway, upon closer inspection it does seem like your texture is already seamless and tileable, I had not noticed before, so you don't need to do any editing for now. All you have to do is correctly unwrap your mesh as described in the link above.
Still have in mind that your texture is not very big and will still have noticeable patterns when repeated over an extensive surface. That can only be fixed with a better texture.
How will you be rendering the image, Cycles?
You may also reduce or mitigate the repeating effect with some UV distortion using nodes, but don't expect miracles, You could use some of the procedural textures like Musgrave or Noise, or whichever suits you best to distort the UV coordinates and create a disturbance in the texture. Here is an example of how this could be done.
If you want to export this for another game engine don't bother with Cycles for now. Switch to Blender Internal render using the menu on the header of the window.
- First step open your image in the image editor
- Then unwrap your mesh over it
- Add a new material to your mesh in the properties window
- In the texture tab of the properties window add a new texture to your material
- Choose image texture type and add your image from the dropdown